如何映射每个类型的表关联?

时间:2016-03-04 09:25:59

标签: c# entity-framework-6

我有一个由nHibernate 3" 代码构建的SQLite数据库&#34 ;;那时,首先编写模型,然后使用Fluent nHibernate进行映射。必须将数据库集成到使用 Entity Framework 6.1.3 的应用程序中。我无法修改数据库结构(无ALTER TABLE)。

如何配置映射?

这些表是这样创建的:

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; }
}

我尝试映射失败的原因是,映射(至少默认情况下)是在每个表的主键上完成的,并且它们必须具有相同的名称。就我而言,表ìd中的ID为Person,表Person_id中的Patient

1 个答案:

答案 0 :(得分:0)

以下是我对地图层次结构所做的修改:

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; }
}