Load from dictionary or database if not found
Using ContainsKey() together with TryGetValue() seems a little bit too much. Just change it like so  

if (_roomModels.TryGetValue(modelName, out model))
{
    return true;
}  


which is much easier to read and faster for items which are in the dictionary.



If the columns in the database allow null values you should check first with Convert.IsDBNull() so the method doesn't blow in the users face at any of the Convert.ToXX() methods.



The Where clause of the sql query looks like it is not working.
You should at least let the columns have some space to breathe which makes the query easier to read.