Class 使用FluentNHibernate映射接口和具体类
我试图用fluentnhibernate映射一个接口和具体类 这是我的界面/类:Class 使用FluentNHibernate映射接口和具体类,class,fluent-nhibernate,interface,mapping,Class,Fluent Nhibernate,Interface,Mapping,我试图用fluentnhibernate映射一个接口和具体类 这是我的界面/类: public interface IUser { int Id { get; set; } } public class User: IUser { public int Id { get; set; } public string Name { get; set; } public string Password { get; set; } } 以下是我的映射文件: public cla
public interface IUser
{
int Id { get; set; }
}
public class User: IUser
{
public int Id { get; set; }
public string Name { get; set; }
public string Password { get; set; }
}
以下是我的映射文件:
public class IUserMap: ClassMap
{
public IUserMap()
{
Table("User");
Id(u => u.Id)
.Column("Id")
.GeneratedBy.Native();
}
}
public class UserMap: SubclassMap
{
public UserMap()
{
Map(u => u.Name);
Map(u => u.Password);
}
}
我得到了这个错误:
could not execute query
[ SELECT this_.Object_id as Id3_0_, this_.Name as Name4_0_, this_.Password as Password4_0_ FROM "User" this_ inner join User this_1_ on this_.Object_id=this_1_.Id WHERE this_.Name = @p0 ]
Positional parameters: #0>test
[SQL: SELECT this_.Object_id as Id3_0_, this_.Name as Name4_0_, this_.Password as Password4_0_ FROM "User" this_ inner join User this_1_ on this_.Object_id=this_1_.Id WHERE this_.Name = @p0]
请注意它正在查找的this.Object\u id列。。。这不是我的ID列,但我不能指定Idmy\U ID\U列;在子类映射中
我做错了什么?你想用什么样的继承策略来映射?表/类还是表/类层次结构?当前映射意味着每个类有一个表 不管怎样,我觉得出了点问题。Object_id是外键名,它应该通过查看父类的名称来构建。我的猜测是,我们没有将接口视为父接口 首先,我建议你在我们的问题列表中提出一个问题,或者点击邮件列表。我们的雷达会更关注这一点
其次,您可以尝试显式地指定列名,但我不知道我提到的父问题可能会产生什么其他影响。要指定它,您只需要执行KeyColumnId。将KeyColumnId添加到我的子类映射中就行了。我也会为对象id问题开罚单。谢谢你,詹姆斯!