Ser*_*sev 5 .net entity-framework table-per-type table-per-class
我们正在遗留数据库上创建一个EntityFramework CodeFirst DAL (这意味着我们大多数时候都遇到了它的设计错误).
域模型(非常)简单:我们有抽象卡,子类型为HomeCard,CarCard,OwnerCard和RenterCard.确切地说:
abstract class Card {}
class HomeCard: Card {}
class CarCard: Card {}
class OwnerCard: Card {}
class RenterCard: Card {}
Run Code Online (Sandbox Code Playgroud)
数据库模型遵循表格卡片,家庭,汽车,所有者和租用者,其中卡片包含公共列,其他表格包含与特定类别相关的列.这正是TPT的意思,它完美映射到EntityFramework.
在重构之后,我们发现(并非出乎意料)Home和Car确实共享了一些属性,而Owner和Renter也是这样做的.并且它不仅仅是为了美观,而且一些功能将更容易实现(例如按名称搜索所有者和租用者,或者由所有者搜索家庭和卡片).所以我们希望我们的域模型看起来像这样:
abstract class Card {}
abstract class ProperyCard: Card {}
class HomeCard: ProperyCard {}
class CarCard: ProperyCard {}
abstract class PersonCard: Card {}
class OwnerCard: PersonCard {}
class RenterCard: PersonCard {}
Run Code Online (Sandbox Code Playgroud)
但是我们仍然有相同的数据库模型,这意味着我们在TPT和TPC之间有一些奇怪的组合.我们通过EF/CodeFirst映射它的所有尝试都失败了.有关使它工作的任何建议吗?
PS我们的基本表卡,确实有一个鉴别器字段,如果这可能有任何帮助.
您有一个现有的数据库,因此您不想首先使用代码。将实体数据模型项添加到您的项目中,并使用提供的向导将其连接到现有数据库。
我不建议执行以下操作,但如果您必须使 CF 模型与现有数据库一起使用,请尝试以下步骤。
注意:在针对旧数据库使用 CF 框架时,您很可能会遇到错误。如果你的CF框架不完美,它就会受到影响。
| 归档时间: |
|
| 查看次数: |
958 次 |
| 最近记录: |