【问题标题】:Dealing with a cyclical reference in EF 4在 EF 4 中处理循环引用
【发布时间】:2013-10-31 04:05:06
【问题描述】:

我有一个遗留数据库设计,我正在尝试使用 EF 4 解决。本质上,我有两个相互引用的表,在尝试添加新条目时会导致问题。

我的结构是这样的:

CREATE TABLE [dbo].[Account] (
     [AccountId] INT IDENTITY (1, 1) NOT NULL,
     [PrimaryPersonId] INT NULL,
     [other columns])

CREATE TABLE [dbo].[Person] (
    [PersonId] INT IDENTITY (1, 1) NOT NULL,
    [AccountId] INT NOT NULL,
    [other columns])

Person 具有 Account (AccountId) 的外键,Account 具有 Person (PrimaryPersonId) 的外键。创建新帐户和人员时,这显然是一个问题。目前的解决方案是在 Person 表上使用插入触发器,在创建人员时使用新的 PrimaryPersonId 更新 Account 表。

我想摆脱对触发器的需求,并尽可能将此代码带入模型中,这样就不会发生“魔术”。有没有用 EF 4 做到这一点的好方法?

【问题讨论】:

  • accountperson 上的两条记录是否总是相互指向?例如,person 中的(personid = 1, accountid = 2)account 中的(accountid = 2, primarypersonid = 3) 可以吗?
  • 一个帐户可以关联多个人(因此需要一个主帐户),但一个人不能关联多个帐户。

标签: sql entity-framework-4 cyclic-reference


【解决方案1】:

我建议将插入发生在代码中。构建一个接受人员对象作为参数的帐户方法)以将人员对象添加到帐户表中。你甚至可以做得更大,在任何处理插入到该表的东西上封装一个接口,这样你就可以确保它总是发生。

布莱克·罗杰斯 Onyxtek Software Solutions, LLC

【讨论】:

    猜你喜欢
    • 2011-12-27
    • 2016-09-04
    • 2014-04-13
    • 2015-11-08
    • 1970-01-01
    • 2011-04-12
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多