实体框架如何在两个表的两列之间建立关系

时间:2019-12-02 03:39:11

标签: c# asp.net asp.net-mvc entity-framework asp.net-core

有两个实体A和B。它们之间存在一对多关系。 假设A为以下类型。

class A
{
        public int Id { get; set; }
        public bool isActive{ get; set; }
        public ICollection<B> BCollection{ get; set; }
        //Rest Of A properties
}

class B
{
        public int Id { get; set; }
        public A A{ get; set; }
        public int AId{ get; set; }
        public bool isAActive{ get; set; }
        //Rest of B Properties
}
B AId中的

S是A中主键Id的外键。由于在B中具有A实例,因此该实体框架由其自身配置。

是否可以通过实体框架配置DBSet,以便根据A中isActive的值自动设置isAActive的值?

1 个答案:

答案 0 :(得分:1)

不确定这是否是您要寻找的东西,但使用构造函数可能会有所帮助

public  class A
{
    public int id { get; set; }
    public bool isActive { get; set; }
    public List<B> BCollection { get; set; }
}

public class B
{
    public B (A a){
        isAActive = a.isActive;
        }
    public int id { get; set; }
    public A A { get; set; }
    public bool isAActive { get; set; }
}

static void Main(string[] args)
{
    A a = new A()
    {
        id = 1,
        isActive = true
    };
    A a2 = new A()
    {
        id = 2,
        isActive = false
    };

    List<B> bs = new List<B>()
    {
        new B(a) { id = 100, A = a},
        new B(a) { id = 200, A = a}
    };
    a.BCollection = bs;

    List<B> bs2 = new List<B>()
    {
        new B(a2) { id = 300, A = a2},
        new B(a2) { id = 300, A = a2}
    };
    a2.BCollection = bs2;

    return;
}

a.BCollection的isAActive设置为true
a2.BCollection的isAActive设置为false