【发布时间】:2012-10-31 16:40:25
【问题描述】:
Entity Framework 5.0 代码优先与现有数据库。使用电动工具对课程进行逆向工程。一切都很好。数据库有两个表。一个父母和一个孩子,外键回到父母ID。 ID 都是具有自动增量的 int。我添加了许多父记录,现在想将子记录添加到特定的父记录。我能看到的唯一方法是通过在 Parent 表中搜索名称或其他属性并返回 ID 来找到适当的父 ID。然后在添加子项时在外键属性中使用该 ID。我不想创建新的父母,这是将孩子添加到现有父母的唯一方法吗?所有互联网示例似乎都在添加新父级的同时添加了一个子级,而不是向现有父级添加了一个子级。任何帮助将不胜感激
【问题讨论】:
-
要设置相关实体,您可以将导航属性设置为父实体,或者设置外键。如果您知道 ID 并且您没有父级,则只有外键。如果您有父对象,只需设置导航属性。如果您不知道 ID 也不知道父对象,您如何知道子实体与哪个父对象相关?
-
让我举个例子。假设父实体是教师,我在数据库中有 Bob、Julie 和 Dave。子实体是具有一对多班级关系的班级。我想给 Julie 添加一个班级,但我没有她的主 ID,因为它是几天前我输入她时自动创建的。那么,我是否必须在教师姓名属性中搜索“Julie”并返回她的主 ID,然后将其用作新的班级外键?
-
识别朱莉的唯一方法是使用 ID。原因是 ID 始终是唯一的,为什么名称不是。您可以使用 `context.Teachers.First(t => t.Name == "Julie") 之类的代码从数据库中获取实体,并使用 ID 或参考。没有其他设置关系的方法,因为您不知道将关系设置为什么。另请注意,朱莉可能在此期间已被删除。
标签: entity-framework parent-child