Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用NHibernate类映射自动将列映射到类属性_C#_Nhibernate - Fatal编程技术网

C# 使用NHibernate类映射自动将列映射到类属性

C# 使用NHibernate类映射自动将列映射到类属性,c#,nhibernate,C#,Nhibernate,我正在使用设置NHibernate 5.2在本地SQLExpress数据库上进行尝试 我的类别实体(顺便说一下,它是示例数据库) 公共类类别 { 公共虚拟int类别ID{get;set;} 公共虚拟字符串CategoryName{get;set;} 公共虚拟字符串描述{get;set;} 公共虚拟字节[]图片{get;set;} } 我的类别映射 公共类类别映射:类映射 { 公共类别映射() { 表(“类别”); Id(x=>x.CategoryID); } } 我的测试配置和查询 类程序

我正在使用设置NHibernate 5.2在本地SQLExpress数据库上进行尝试

我的
类别
实体(顺便说一下,它是示例数据库)

公共类类别
{
公共虚拟int类别ID{get;set;}
公共虚拟字符串CategoryName{get;set;}
公共虚拟字符串描述{get;set;}
公共虚拟字节[]图片{get;set;}
}
我的
类别映射

公共类类别映射:类映射
{
公共类别映射()
{
表(“类别”);
Id(x=>x.CategoryID);
}
}
我的测试配置和查询

类程序
{
静态void Main(字符串[]参数)
{
配置配置=新配置()
.DataBaseIntegration(数据库=>
{
db.ConnectionString=@;
db.方言();
});
var mapper=newmodelmapper();
AddMappings(新列表{
类型(类别映射)
});;
var mapping=mapper.CompileMappingForAllExplicitlyAddedEntities();
config.AddMapping(映射);
var sessionFactory=config.BuildSessionFactory();
使用(var session=sessionFactory.OpenSession())
{
var categories=session.QueryOver().List();
};
}
}
然而,我注意到在我的测试查询中,只有
CategoryID
字段被填充,其他字段为空(在数据库中,表
Categories
中它们有值)。如果我向
CategoryMap
添加更多的
属性(x=>x.)
,它们将获得预期的各自值。

我的问题是:我是否必须为表中的每一列手动添加
属性(x=>x.
),即使它们的名称与实体的属性相同?我是否缺少任何配置以使其自动映射


谢谢您的时间。

结果表明我使用了错误的
ModelMapper
。我将其更改为
ConventionModelMapper
,只需在类映射中指定表名

我的新
类别映射

公共类类别映射:类映射
{
公共类别映射()
{
表格(“类别”);
Id(x=>x.CategoryID);
//在db中,此列的类型为image
//而属性类型为byte[],因此需要此显式属性映射
属性(x=>x.Picture,m=>m.Type(新的BinaryBlobType());
}
}
我的配置的一部分(在同一个程序类中,为简洁起见,省略了其余部分)

。。。
//与ModelMapper不同,此映射器自动映射类名->表、属性->列
var mapper=new ConventionModelMapper();
AddMapping();
var mapping=mapper.CompileMappingForAllExplicitlyAddedEntities();
config.AddMapping(映射);
...