我在我的数据库中创建了大量的表,这里有一些问题:
Table Name -Item
ItemID - PK (Auto Increment)
Title
Table Name -Game
ItemID - PK
Console
Table Name -Film
ItemID - PK
Type
我还在ItemID和Film-Item以及Game-Item之间添加了一个关联
问题是,当我将它放在Visual Studio中并使用实体框架时,它似乎有点崩溃了类并完全删除了电影和游戏...我不能在我的ASP代码中使用Game或Film作为实体,任何想法如何解决这个问题?
答案 0 :(得分:4)
是的,这就是实体设计师的行为方式。如果您在数据库中对结构进行建模并使用从数据库更新模型,它确实将被建模为常见关联,因为EF还不知道您希望将其建模为继承。你会得到这个:
您必须手动修改此模型才能使用TPT继承。首先删除两个关系。它还将删除导航属性,您将得到:
从工具箱中使用继承(如前面的屏幕截图所示),并从Film
到Item
以及从Game
到Item
画一条线。现在你需要完成这个模型。当前模型将不会验证,因为ItemId
在父实体和子实体中都已映射。从ItemId
和Film
实体中删除Game
。你也可以使Item实体抽象,你会得到这个: