【问题标题】:The context is already tracking the entity - I know but how to solve it?上下文已经在跟踪实体 - 我知道但如何解决它?
【发布时间】:2013-12-08 22:05:45
【问题描述】:

我正在编写 WPF 客户端应用程序并使用 WCF 数据服务与数据库进行通信。我有以下情况:我添加了一个新策略,它有一个附加对象 House,每个 House 都有一个地址。在标准实体框架应用程序中这不是问题,但在这里我需要添加实体之间的关系。这是我的代码:

context.AddToPolicySet(Policy);
context.AddToAdressSet(Address);
context.AddRelatedObject(Address, "HouseSet", House); 
context.AddRelatedObject(Policy, "HouseSet", House); // !!!!!!!!!!!!
Policy.HouseSet.Add(House);
House.PolicySet = Policy;
Address.HouseSet.Add(House);
House.AdressSet = Address;

现在,我了解到上下文已经在跟踪实体。但是如何解决这个问题呢?如果我删除第四行,则会收到错误“插入语句紫罗兰色外键约束...”。在我看来,我需要在政策上附加一个房子,在地址上附加一个房子。但我的方式显然是错误的方式。什么是正确的? :)

【问题讨论】:

    标签: c# wpf wcf entity-framework


    【解决方案1】:

    使用AddLink 方法:

    context.AddLink(Policy, "HouseSet", House);
    

    编辑

    好像是

    context.SetLink(House, "PolicySet", Policy);
    

    【讨论】:

    • 给我消息“插入语句紫罗兰色外键约束...FK_HousePolicy”所以我猜它不起作用。
    • 啊,应该是AttachLink吧。
    • 现在我得到:“关系的一端或两端处于添加状态。”。我认为这是因为我之前做过 context.AddToPolicySet(Policy) 但没有它我会得到“上下文没有跟踪实体”异常......
    • 嗯,这表明我在这里并不精通。只是偶尔尝试过这种东西。设置链接?
    • SetLink 但以不同的方式使用有帮助!谢谢 :) 这是有效的: context.SetLink(House, "PolicySet", Policy);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    相关资源
    最近更新 更多