Class 使用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

我试图用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 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问题开罚单。谢谢你,詹姆斯!