Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 实体框架反向POCO生成器的表每类型继承_Sql Server_Entity Framework_Entity Framework 6_Poco - Fatal编程技术网

Sql server 实体框架反向POCO生成器的表每类型继承

Sql server 实体框架反向POCO生成器的表每类型继承,sql-server,entity-framework,entity-framework-6,poco,Sql Server,Entity Framework,Entity Framework 6,Poco,可以在继承场景中使用(awesome)生成POCO吗 我的数据库包含一个“基本”日志表,以及从中派生的两个表: create table LogBase ( Id int identity(1, 1) not null, LogTime datetime not null default getdate(), constraint PK_LogBase primary key clustered(Id) ) create table ErrorLog ( Id

可以在继承场景中使用(awesome)生成POCO吗

我的数据库包含一个“基本”日志表,以及从中派生的两个表:

create table LogBase
(
    Id int identity(1, 1) not null,
    LogTime datetime not null default getdate(),
    constraint PK_LogBase primary key clustered(Id)
) 

create table ErrorLog
(
    Id int not null,
    ErrorMessage nvarchar(max),
    StackTrace nvarchar(max),
    constraint PK_ErrorLog primary key(Id),
    constraint FK_ErrorLog_LogBase foreign key(Id) references LogBase(Id)
)

create table ChangeLog
(
    Id int not null,
    PropertyName nvarchar(max),
    OldValue nvarchar(max),
    NewValue nvarchar(max),
    constraint PK_ChangeLog primary key(Id),
    constraint FK_ChangeLog_LogBase foreign key(Id) references LogBase(Id)
)
默认情况下,反向POCO生成器生成3个C#类——LogBase、ErrorLog和ChangeLog——每个类都包含一个
Id
属性,并且彼此之间没有继承关系

我可以通过将类创建为partials并将
:LogBase
继承放在partialclasses中来指定ErrorLog和ChangeLog从LogBase继承-这是指定继承的正确方法吗?

在模板生成器中,
UpdateColumn
回调允许我指定应在生成的POCO中忽略其
Id
列的表

我可以对ErrorLog和ChangeLog表使用
UpdateColumn
——这会导致从每个类中删除'Id'属性,这对于每个类型的表继承是正确的。但是,它也会导致从生成的DbContext中删除ErrorLog和ChangeLog类,并且ErrorLog和ChangeLog类中会出现以下注释:

// The table 'ChangeLog' is not usable by entity framework because it
// does not have a primary key. It is listed here for completeness.
  • 有没有一种方法可以指定继承关系而不使用 是否导致生成器从模型中忽略派生表

  • 是否有办法防止发电机包含导航 生成的POCO中的属性


看起来您可以解决这个问题:

v2.27的最新版本(2017年1月5日)修复了一个问题(#167),隐藏列和主键使其现在可以工作

  • 从下载v2.27
  • 将生成器更新至最新版本(从今天起为2.27)
  • 将生成器重新添加到项目中(以获取最新代码),并在.tt文件中重新实现更改
  • 保存tt文件

如果有任何问题,请更新GitHub案例,网址为

Many thanks@ErikEJ-一个非常有用的链接。我遵循了建议,虽然我已经取得了一些进展,但仍然存在一些问题——即派生表正在生成POCO,并附带注释说它们“不可由实体框架使用,因为它们没有主键”。我在GitHub项目中提出了一个问题。这是一个很好的指针,指向使用UpdateColumn解决TPT中的重复id问题。谢谢