相关疑难解决方法(0)

清洁处理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万
查看次数

多个导航到同一实体

当有 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 …

c# entity-framework code-first ef-code-first

5
推荐指数
1
解决办法
693
查看次数

实体框架:首先是代码中的外键

我的代码有什么问题,我得到以下错误:

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

码:

食品类:

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

1
推荐指数
1
解决办法
685
查看次数