说我有这个表结构:
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) 当有 2 个导航时,我在 2 个实体之间的连接有问题。
具体来说,我有以下课程:
public class TableA
{
public TableA()
{
ListBs = new List<TableB>();
}
[Key]
public int Id { get; set; }
public TableB MainB { get; set; }
public virtual ICollection<TableB> ListBs { get; set; }
}
public class TableB
{
[Key]
public int Id { get; set; }
public virtual TableA refA { get; set; }
[Required]
public string Text { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这个特定类的场景反映了以下内容:TableA 有一个 TableB 对象列表,还有 1 个主要的 TableB 对象(当然也在列表中)。同样一个 TableB …
我的代码有什么问题,我得到以下错误:
无法确定相关操作的有效排序.由于外键约束,模型要求或存储生成的值,可能存在依赖关系
码:
食品类:
public class Food
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public short Id { get; set; }
//some Property
public string Name { get; set; }
public virtual ICollection<Person> Persons { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
班级人员:
public class Person
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
//some Property
public string FirstName { get; set; }
[ForeignKey("BestFoodId")]
public Food BestFood { get; set; }
public short BestFoodId { get; set; }
public virtual ICollection<Food> FavoriteFoods { get; set; …Run Code Online (Sandbox Code Playgroud) c# entity-framework foreign-keys code-first entity-framework-6