Я использую настройку NHibernate 5.2, чтобы попробовать его в локальной базе данных SQLExpress.
Моя Category
сущность (кстати, это пример Северный ветер база данных)
public class Category
{
public virtual int CategoryID { get; set; }
public virtual string CategoryName { get; set; }
public virtual string Description { get; set; }
public virtual byte[] Picture { get; set; }
}
My CategoryMap
public class CategoryMap : ClassMapping<Category>
{
public CategoryMap()
{
Table("Categories");
Id(x => x.CategoryID);
}
}
Мои тестовые конфигурации и запрос
class Program
{
static void Main(string[] args)
{
Configuration config = new Configuration()
.DataBaseIntegration(db =>
{
db.ConnectionString = @"<my connection string>";
db.Dialect<MsSql2008Dialect>();
});
var mapper = new ModelMapper();
mapper.AddMappings(new List<Type> {
typeof(CategoryMap)
});;
var mapping = mapper.CompileMappingForAllExplicitlyAddedEntities();
config.AddMapping(mapping);
var sessionFactory = config.BuildSessionFactory();
using (var session = sessionFactory.OpenSession())
{
var categories = session.QueryOver<Category>().List<Category>();
};
}
}
Однако я заметил, что в моем тестовом запросе только Поле CategoryID
заполнено, остальные поля являются пустыми (в базе данных таблица Categories
имеет значения). Если я добавлю больше Property(x => x.<field name>)
к CategoryMap
, они получат свои соответствующие значения, как и ожидалось.
Мой вопрос таков: нужно ли вручную добавлять Property(x => x.<property name here>
для каждого столбца в таблице, даже если они имеют идентичные имена со свойствами объекта? Мне не хватает какой-либо конфигурации для автоматического сопоставления?
Спасибо за ваше время.