我被赋予了使用Entity Framework 4建模实际数据库的任务。我面前的主要障碍是继承在数据库中建模的方式。
主要是一个带有扭曲的TPH(每个层次表):许多子类共享其他链接表。这些表对于几种子类型是通用的。
|===============|
| ASSET |
| asset_id |
| asset_type |
=================
1| 1|
| |
| -----------------------------------
1| |
|=========================| |
| ASSET_WITH_COUPON | |
| asset_id | |
| ... | |
|=========================| |
1| 1| |
| | |
| | |
1| 1| 1|
|============| |============| |============|
| CDS | | LOAN | | EQUITY |
| asset_id | | asset_id | | asset_id |
| ... | | ... | | ... |
|============| |============| |============|
ASSET.asset_type
的可能值:
这意味着表格LOAN
用于TermLoan
和RevolverLoan
类型,而且需要表格ASSET
,ASSET_WITH_COUPON
和CDS
对LongCDS
或ShortCDS
进行实例化并充分保湿。
因此,类模型应该是这样的:
|===============|
| AbstractAsset |
|===============|
Δ Δ
| |
| -------------------------------------------------------
| |
|=========================| |
| AbstractAssetWithCoupon | |
|=========================| |
Δ Δ |
| | |
| ------------------------ |
| | |
|=============| |==============| |========|
| AbstractCDS | | AbstractLoan | | Equity |
|=============| |==============| |========|
Δ Δ Δ
| | |
| --------- |
| | |
|=========| |==========| |==========|
| LongCDS | | ShortCDS | | TermLoan |
|=========| |==========| |==========|
使用NHibernate,我会做http://nhibernate.info/doc/nh/en/index.html#inheritance-mixing-tableperclass-tablepersubclass之类的事情。我无法用EF4来构建这个层次结构。任何的想法 ?非常感谢!
答案 0 :(得分:0)
嗯,实际上根据指定的here是不可能的。我只是没有意识到这是同一个问题:/
我添加了表以匹配Table-Per-Class模型,主表上的触发器与其他表保持同步(我们有遗留代码,不使用EF来写数据)
@Ladislav:谢谢你的兴趣。