EF Architecture,将继承的实体添加到现有表中

时间:2013-05-21 20:09:19

标签: c# asp.net entity-framework

我不确定这是否可以实现,因此我会问你们!

假设我有一个现有的表,其中包含一本书籍注册表,其中包含所有书籍。我们可以将此表称为“Books”(实体),它具有BookID,BookTitle和BookDescription。我使用EF和数据库第一种方法,并使用DbContext。

非常简单的结构,但我知道我想出售书籍,并希望利用我现有的书籍表格注册表,用户可以在我的主页上浏览。我还有一些待售的旧书,我想以某种方式连接到我的书籍表。

在我的世界里,我想要一个名为“Book”的基类结构,以及派生类“NewBook”和“UsedBook”,但我完全失去了如何用我现有的Books表和Entity实现这一点框架。

1 个答案:

答案 0 :(得分:0)

我必须在项目中实现EF中的继承,我发现在数据库中首先创建子类作为表时很难做到。相反,我在EF模型中添加了子类作为实体,生成了数据库脚本,然后运行脚本将表添加到数据库中。以下是我采取的步骤:

  1. 在EF模型图.edmx文件中右键单击背景并添加新建...实体。
  2. 键入实体名称(在示例UsedBook中),并选择基本类型为Book。
  3. 单击“确定”后,您可以向UsedBook添加属性。
  4. 再次右键单击背景,然后选择“从模型生成数据库”。这将生成一个SQL文件。
  5. 现在,如果现有数据库中有数据,则不要执行整个脚本,因为它会删除现有表。相反,找到新表UsedBook的所有引用(将在数据库中称为Books_UsedBook)并执行这些行。您可能需要手动更改Book表的引用,因为它可能错误地复数。只需确保脚本中的Book表名与数据库中的内容匹配即可。
  6. 执行脚本后,返回.edmx模型,右键单击背景,然后选择“验证”。你不应该在这里遇到任何错误。
  7. 在您的数据库中,您现在将拥有一个Books_UsedBook类,其BookId列引用Books表中的BookId列。
  8. 希望这有帮助!