C# 如何按类型关联映射表?
我有一个SQLite数据库,它是由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
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; }
}