流利的API一对多映射表 [英] Fluent API One to Many mapping table

查看:76
本文介绍了流利的API一对多映射表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果有人可以向我解释如何使用Fluent API为一对多关系创建映射表(关联表),这真的很有帮助。

It's really helpful if anyone could explain me how to create a mapping (associated)table for one to many relationship using Fluent API.`

    public class Category
{
public int ID { get; set; }
public string Name { get; set; }
public List<Image> Images { get; set; } 
}

public class Image
{
public int ID { get; set; }
public string Name { get; set; }
public List<Category> Category{ get; set; } 

映射表应包含CategoryID和ImageID。
解决方案应与此类似。 (这对很多人来说都是这样)

The mapping table should contain CategoryID and ImageID. The solution should be something similar to this. (This is for many to many)

        modelBuilder.Entity<Category>()
            .HasMany(c => c.Images).WithMany(i => i.Categories)
            .Map(t => t.MapLeftKey("CategoryID")
                .MapRightKey("ImageID")
                .ToTable("CategoryImage"));

我希望Fluent API为以下关系创建新的映射表。

I want Fluent API to create new mapping table for the below relationship.

 public class Category
{
public List<Image> Images{get; set;}
}

public class Image
{

public Category Category{ get; set; } 
}


推荐答案

添加NewTable:

Adding NewTable:

modelBuilder
    .Entity<NewTable>()
    .HasRequired(_ => _.Category)
    .WithMany()
    .HasForeignKey(_ => _.CategoryId);

modelBuilder
    .Entity<Image>()
    .HasRequired(_ => _.NewTable)
    .WithMany(_ => _.Images)
    .HasForeignKey(_ => _.NewTableId)

public class NewTable
{
    public int ID { get; set; }
    public int CategoryId { get; set; }
    public List<Image> Images { get; set; }
    public virtual Category Category { get; set; } 
}

public class Image
{
    public int ID { get; set; }
    public string Name { get; set; }
    public List<Category> Categories { get; set; }
    public int NewTableId { get; set; } 
    public virtual NewTable NewTable { get; set; }
}

这篇关于流利的API一对多映射表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆