Sql server 实体框架反向POCO生成器的表每类型继承
可以在继承场景中使用(awesome)生成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
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
- 将生成器更新至最新版本(从今天起为2.27)
- 将生成器重新添加到项目中(以获取最新代码),并在.tt文件中重新实现更改
- 保存tt文件
如果有任何问题,请更新GitHub案例,网址为Many thanks@ErikEJ-一个非常有用的链接。我遵循了建议,虽然我已经取得了一些进展,但仍然存在一些问题——即派生表正在生成POCO,并附带注释说它们“不可由实体框架使用,因为它们没有主键”。我在GitHub项目中提出了一个问题。这是一个很好的指针,指向使用UpdateColumn解决TPT中的重复id问题。谢谢