English 中文(简体)
EF 代码首部多个 FK 协会,用于单一示范对象
原标题:EF CodeFirst Multiple FK associations to single model object

使用 EF 代码 1, 我有一个具有多个属性的模型对象, 与一个单一的模型对象相关联 :

public class Job 
{
    public int Id { get; set; }
    public int Company1Id { get; set; }
    public int Company2Id { get; set; } // References CompanyId
    public int Company3Id { get; set; } // References CompanyId
    ...

    public virtual Company Company1Info { get; set; }
    public virtual Company Company2Info { get; set; }
    public virtual Company Company3Info { get; set; }
 }

 public class Company
 { 
    public int CompanyId { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
 }

任务图类的关系

        this.HasRequired(t => t.Company1Info)
            .WithMany()
            .HasForeignKey(d => d.Company1Id);
        this.HasRequired(t => t .Company2Info)
            .WithMany()
            .HasForeignKey(d => d.Company2Id);
        this.HasRequired(t => t.Company3Info)
            .WithMany()
            .HasForeignKey(d => d.Company3Id);

获取数据的方法

 public Job GetById(int id)
    {
        return _dbContext.Set<Job>()
            .Include(t => t.Company1Info)
            .Include(t => t.Company2Info)
            .Include(t => t.Company3Info)
            .First(x => x.Id == id);
    }

当我运行应用程序时, Company2Info 和 Company3Info 无效。 我试图在上下文中为每家公司设置一个新的 DbSet 实例, 但我得到了一个 < code> unsupportedexplication

谢谢!

更新:这是对相同问题的答案,但对我而言,`实体框架守则第一-同一表格的两个外国密钥

最佳回答

<强度 > 解决方案:

我在问题中的设置和链接中的解决方案是正确的。我创建的对象模型由于一个不存在的钥匙而无效 -- 换句话说,我试图提到的公司的Id并不存在。

我所做的唯一修改是添加 WillCascadeOnDelete 方法,并将其设置为 false ,因为默认值是真实的 -- -- 注意Im,在工作映射类中使用流利的 API,而不是上下文模型构建器。

任务图类的关系

    this.HasRequired(t => t.Company1Info)
        .WithMany()
        .HasForeignKey(d => d.Company1Id)
        .WillCascadeOnDelete(false);
    this.HasRequired(t => t .Company2Info)
        .WithMany()
        .HasForeignKey(d => d.Company2Id)
        .WillCascadeOnDelete(false);
    this.HasRequired(t => t.Company3Info)
        .WithMany()
        .HasForeignKey(d => d.Company3Id)
        .WillCascadeOnDelete(false);

HTH, HTH, HTH, HTH, HTH, HTH, HTH, HTH, HT, HTH

问题回答

暂无回答




相关问题
Entity Framework with MySQL connector in c#

I have been trying to get the Entity Framework to work in my web application using MySQL. It works fine on my local pc, but doesn t work when I put it on the server. Since the server is a shared ...

How Do I Create And Update A Many To Many Relationship With EF

I am using the Entity Framework with SQL Server. I have a many to many relationship between 2 tables. I have created a join table with just the primary key fields of the 2 tables. In the designer, the ...

Entity Framework with File-Based Database

I am in the process of developing a desktop application that needs a database. The application is currently targeted to SQL Express 2005 and works wonderfully. However, I m not crazy about having ...

Linq to enties, insert foreign keys

I am using the ADO entity framework for the first time and am not sure of the best way of inserting db recored that contain foreign keys. this is the code that i am using, I would appreciate any ...

Entity Framework - Many to many question

I have a table called ASB and a table called PeopleInvolved. There is a junction table called PeopleInvolved_ASB which simply contains an ASBID and a PeopleInvolvedID column. The columns act as a ...

Post back complex object from client side

I m using ASP.NET MVC and Entity Framework. I m going to pass a complex entity to the client side and allow the user to modify it, and post it back to the controller. But I don t know how to do that ...

ADO.NET Entity Data Model are not precise enough

I run this code: var cos = from k in _db.klienci_do_trasy where k.klient_id == 5 select k; but the query send to database is: SELECT * FROM `klienci_do_trasy` LIMIT 0, 30 why is it for, there ...

热门标签