相关疑难解决方法(0)

无法确定相关操作的有效排序

这是我的模特

public string Content { get; set; }

public Faq Reply { set; get; }

public int? ReplyId { get; set; }

public ICollection<Faq> Children { get; set; }

[ForeignKey("WriterId")]
public virtual UserProfile Writer { get; set; }

public virtual int? WriterId { get; set; }

public Status Status { get; set; }

[ForeignKey("DepartmentId")]
public virtual Department Department { get; set; }

public virtual int? DepartmentId { get; set; }
Run Code Online (Sandbox Code Playgroud)

这是我的错误

无法确定相关操作的有效排序.由于外键约束,模型要求或存储生成的值,可能存在依赖关系.

entity-framework

24
推荐指数
3
解决办法
4万
查看次数

清洁处理EF中的循环引用的方法?

说我有这个表结构:

Client
-----------
ClientId                     int            not null    (identity)
CurrentDemographicId         int            null        (FK to ClientDemographic)
OtherClientFields            varchar(100)   null


ClientDemographic
------------------
ClientDemographicId          int            not null    (identity)
ClientId                     int            not null    (FK to Client)
OtherClientDemographicFields varchar(100)   null
Run Code Online (Sandbox Code Playgroud)

我们的想法是Client(在EF中)将具有ClientDemographics列表和CurrentDemographic属性.

问题是当我设置对象结构并尝试保存它时,我收到此错误:

无法确定相关操作的有效排序.由于外键约束,模型要求或存储生成的值,可能存在依赖关系

这个错误是有道理的.我在表格设置中有一个循环引用.它不知道首先插入哪个实体(因为它同时需要来自两个表的Id).

所以,我一起破解了一个看起来像这样的解决方案:

// Save off the unchanged ClientDemograpic
ClientDemographic originalClientDemographic = client.CurrentClientDemographic;

// Merge the contract into the client object
Mapper.Map(contract, client);

// If this is a new client then add as new to the list.
if (client.ClientId == 0)
{
    dataAccess.Add(client);
} …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework circular-dependency entity-framework-4

17
推荐指数
1
解决办法
2万
查看次数