带有复合键的EntityFramework导航属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有复合键的EntityFramework导航属性相关的知识,希望对你有一定的参考价值。

我正在寻找一些实体时检索一些额外的数据。这是我到目前为止的位置。

Parts表将多次具有相同的Part(多个集合),当我尝试应用Migration时,HasForeignKey(e => new e.Number,e.ColorId)出现错误。因为它不是唯一的。还有另一种方法吗?

// Tables

    public class Set
    
        public int Id  get; set; 
        public string Number  get; set; 
        public string Name  get; set; 
        public int NumberOfParts  get; set; 

        public IList<Part> Parts 
    

    public class Part
    
        public int Id  get; set; 
        public string Number  get; set; 
        public int ColorId  get; set; 
        public int Quantity  get; set; 

        public Set Set  get; set;         
    

    public class MyParts
    
        public int Id  get; set; 
        public string Number  get; set; 
        public int ColorId  get; set; 
        public int Quantity  get; set;    
        public string Location  get; set; 
    

    / Repo Method
    public async Task<Set> GetSetAsync(string number, CancellationToken cancellationToken = default)        
    
        //My Call to get the data
        var set = await Get<Set>()  
            Where(s => s.Number == number)
            .Include(x => x.Parts)
            .SingleOrDefaultAsync(cancellationToken);

        return set;
    

我正在寻找作为GetSetAsync()的一部分的MyParts.Location和MyParts.Quantity。>

我添加了此

    modelBuilder.Entity<Part>()
                .HasOptional(e => e.MyPart) // I may not have the part
                .WithOne()
                .HasForeignKey(e => new  e.Number, e.ColorId );  

所需查询

    Select  set.*,
            part.*
            myParts.Location,
            myParts.Quantity
    FROM    Set set
    INNER JOIN Part part on set.Id = part.setId
    LEFT JOIN MyParts myParts on my

Parts.ColorId = part.ColorId and myParts.Number = part.Number

预先感谢

我正在寻找一些实体时检索一些额外的数据。这是我到目前为止的位置。零件表会多次(多套)具有相同的零件,而当我尝试应用...

以上是关于带有复合键的EntityFramework导航属性的主要内容,如果未能解决你的问题,请参考以下文章

使用实体框架将行插入到具有复合键的表中

Entity Framework 4.1 Code First,一对一,一个表连接到复合键的单个键字段

实体框架:如何从具有复合键的表中返回一行?

微风:尽管定义了 invForeignKeyNames,但仍然没有填充复合外键的单向一对多导航

带有复合键的 Rails RESTful 路由

实体框架代码优先导航问题