2012-07-13 71 views
3

我想从一个C#应用程序使用Linq /实体框架将数据保存到数据库中。插入到单个表格非常简单,但我不确定如何将数据插入到三个表格中,这些表格都与自动增量标识相互关联? 这是一刮,所以我以一个线程,它的所有帖子 - 每个ThreadTitle每个邮政用户(而不是实际的表名)相关联。英菲插入多个相关的表

我的设计思路是将完整的线程拖入内存中,然后执行“批量”插入操作。为了减少负载,我希望有一些方法来保持关系约束,而不需要查找,多次插入等。

+0

您是使用代码优先还是数据库优先? – 2012-07-13 20:43:31

+0

我不知道你在问什么......我有我的数据库设置PK/FK的约束,我想刮所有数据到内存中,然后不经常插入到数据库 – Volvox 2012-07-13 20:59:27

+0

Database-first是当您使用EF从现有数据库创建实体数据模型时。使用代码优先,您首先设计您的类,然后使用EF基于这些类生成数据库。 – 2012-07-13 21:09:49

回答

1

如果您想要保存两个相关的记录,因为在一个中存在FK(A )到另一个(B),执行以下操作:

  • 创建对象B

  • 对象B上下文添加

  • 创建对象A

  • 设置导航属性在一个指向B(AB)重视B.

  • 对象A添加到关联

  • 保存更改上下文

你不实际上必须将两个对象添加到上下文中,一个就足够了,因为有相关的EF可以在树中找到所有内容。 EF将自行确定要先插入的内容并设置正确的ID。

这是你的意思吗?希望这可以帮助。

+0

我认为这是我很好奇的...如果EF的工作方式,只要我创建EF中的对象,然后他们将保存到数据库并保持它们的正确关联(例如正确的用户与创建线程和帖子相关联,并在正确的线程下发布 - 所有的PK-FK关系)。 – Volvox 2012-07-13 20:57:56

+1

只要上下文知道它们,它就会工作。新对象?保存。您使用上下文加载的现有对象?没有额外的事情要做。您使用另一个上下文加载的现有对象?附上它。 – Maarten 2012-07-14 11:38:10