这是我的模特
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)
这是我的错误
无法确定相关操作的有效排序.由于外键约束,模型要求或存储生成的值,可能存在依赖关系.
说我有这个表结构:
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)