È possibile utilizzare il (fantastico) generatore di POCO inverso di EntityFramework per generare POCO in uno scenario di ereditarietà table-per-type ?
Il mio database contiene una tabella di log 'base' e due tabelle che ne derivano:
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)
)
Per impostazione predefinita, il Reverse POCO Generator genera 3 classi C #: LogBase, ErrorLog e ChangeLog, ognuna delle quali contiene una proprietà Id
e che non ha alcuna relazione di ereditarietà.
Posso specificare che ErrorLog e ChangeLog ereditano da LogBase creando le classi come partial e inserendo l'ereditarietà di : LogBase
nelle classi parziali: è questo il modo corretto per specificare l'ereditarietà?
Nel generatore di modelli, il callback UpdateColumn
mi consente di specificare tabelle che dovrebbero omettere le loro colonne Id
nel POCO generato.
Posso utilizzare UpdateColumn
per le tabelle ErrorLog e ChangeLog: ciò comporta la rimozione della proprietà 'Id' da ogni classe, che è corretta per l'ereditarietà di tipo table-per-type. Tuttavia, comporta anche la rimozione delle classi ErrorLog e ChangeLog dal DbContext generato e il seguente commento viene visualizzato nelle classi ErrorLog e ChangeLog:
// The table 'ChangeLog' is not usable by entity framework because it
// does not have a primary key. It is listed here for completeness.
Esiste un modo per specificare la relazione di ereditarietà senza che il generatore ometti le tabelle derivate dal modello?
C'è un modo per impedire al generatore di includere le proprietà di navigazione nelle POCO generate?
L'ultima versione (5 gennaio 2017) nella v2.27 ha risolto un problema (# 167) con colonne nascoste e chiavi primarie che ora funzionano.
Qualsiasi problema, aggiorna il caso GitHub all'indirizzo https://github.com/sjh37/EntityFramework-Reverse-POCO-Code-First-Generator/issues/181
Sembra che tu possa aggirare il problema:
https://github.com/sjh37/EntityFramework-Reverse-POCO-Code-First-Generator/issues/102