c# - 通过 WCF 数据服务插入新的父/子

标签 c# entity-framework-4 foreign-key-relationship wcf-data-services

例如,我有一个与地址相关的联系人表。为了与数据库通信,我使用 WCF 数据服务。我有一张表格,其中有联系信息以及可能的地址列表。现在,我创建“要插入的地址”列表并使用插入联系人(上下文是此处的实体数据上下文):

context.AddToContact(contact);
context.SaveChanges();

之后我可以获得插入的 contact.ID 并将其作为父 ID 添加到地址列表中的所有地址:

cacheAddressList.ForEach(a =>
                        {
                            address.ContactID = contact.ID;
                            context.AddToAddress(address);
                        }
                        );
context.SaveChanges();

所以我必须执行 2 次插入。
我知道在 Entity Framework 中,如果我在子级之间具有导航属性,我可以将子级添加到父级。就我而言,我确实有导航,但这样的代码不起作用(联系人尚未保存..):

 context.AddToContact(contact);
 cacheAddressList.ForEach(a =>
                            {
                                address.Contact = contact;
                            }
                            );
 context.SaveChanges();

是否可以将所有 child 和 parent 插入到此处的一笔交易中?因为如果可能的话,我不必创建所有要在父插入后添加的子列表。

最佳答案

以下是执行此操作的代码示例:

context.AddToContact(contact);
cacheAddressList.ForEach(a => 
    {
        address.Contact = contact;
        context.SetLink(address, "Contact", contact);
    });

context.SaveChanges(SaveChangesOptions.Batch);

希望这有帮助。 谢谢 普拉蒂克

关于c# - 通过 WCF 数据服务插入新的父/子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5168315/

相关文章:

c#-4.0 - Entity Framework 4.1 修改每个开发人员单元测试环境的连接字符串

asp.net-mvc-3 - Entity Framework 、MVC 3、LINQ To Entities 中的 OrderBy

python - Django - 在单个查询中获取外键对象?

mysql - 无法添加或更新子行 : a foreign key constraint fails (`dbName` .`#sql-e77_7`

c# - 如何确定 IMAP 中消息的 UID

c# - 如何在 (App.config) connectionString 中使用应用程序数据

C# "Register COM interop"选项已禁用

c# - 使用 Moq 模拟 Func<> 构造函数参数并验证它被调用了两次

entity-framework-4 - 存储库模式聚合和聚合根与 Entity Framework 4.0

ruby-on-rails - Rails关系一对多;无法构建子对象?