C# 如何按类型关联映射表?

C# 如何按类型关联映射表?,c#,entity-framework-6,C#,Entity Framework 6,我有一个SQLite数据库,它是由nHibernate3“代码优先”构建的;也就是说,首先编写模型,然后使用Fluent nHibernate进一步进行映射。数据库必须集成到使用实体框架6.1.3的应用程序中。我无法修改数据库结构(无altertable) 如何配置映射? 表的创建方式如下所示: CREATE TABLE [Person] ( [Id] bigint NOT NULL , [FirstName] text NULL , [LastName] text NULL , CONST

我有一个SQLite数据库,它是由
nHibernate
3“代码优先”构建的;也就是说,首先编写模型,然后使用
Fluent nHibernate
进一步进行映射。数据库必须集成到使用实体框架6.1.3的应用程序中。我无法修改数据库结构(无
altertable

如何配置映射?

表的创建方式如下所示:

CREATE TABLE [Person] (
  [Id] bigint NOT NULL
, [FirstName] text NULL
, [LastName] text NULL
, CONSTRAINT [sqlite_master_PK_Person] PRIMARY KEY ([Id])
);

CREATE TABLE [Patient] (
  [Person_id] bigint NOT NULL
  [Nickname] text NULL
, CONSTRAINT [sqlite_autoindex_Patient_1] PRIMARY KEY ([Person_id])
);
我想要的类层次结构是:

public class Person
{
    public long Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
public class Patient : Person
{
    public string NickName { get; set; }
}

我所有的映射尝试都失败了,因为映射(至少在默认情况下)是在每个表的主键上完成的,并且它们必须具有相同的名称。在我的例子中,id在表
Person
中为
d
,在表
Patient
中为
Person\u id
,以下是我对地图层次结构所做的修改:

public partial class Person
{
    [Key]
    public long Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
public partial class Patient : Person
{
    [Key, Column("Person_id")]
    public new long Id 
    {
        get { return base.Id; }
        set { base.Id = value; }
    }
    public string NickName { get; set; }
}