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

C# 实体框架如何在两个表的两列之间建立关系,c#,asp.net,asp.net-mvc,entity-framework,asp.net-core,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;

有两个实体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
}
A类
{
公共int Id{get;set;}
公共bool isActive{get;set;}
公共ICollection B集合{get;set;}
//剩余的属性
}
B类
{
公共int Id{get;set;}
公共A{get;set;}
公共int-AId{get;set;}
公共bool是活动的{get;set;}
//剩余的B属性
}
B中的S AId是A中主键Id的外键。由于B中有A实例,此实体框架自行配置


有没有一种方法可以通过entity framework配置我的数据库集,以便根据a中isActive的值自动设置isActive的值?

不确定这是否是您正在寻找的类型,但使用构造函数可能会有所帮助

公共A类
{
公共int id{get;set;}
公共bool isActive{get;set;}
公共列表b集合{get;set;}
}
公共B级
{
公共图书馆B(A){
isActive=a.isActive;
}
公共int id{get;set;}
公共A{get;set;}
公共bool是活动的{get;set;}
}
静态void Main(字符串[]参数)
{
A=新的A()
{
id=1,
isActive=true
};
A a2=新的A()
{
id=2,
isActive=false
};
列表bs=新列表()
{
新的B(a){id=100,a=a},
新的B(a){id=200,a=a}
};
a、 b收集=bs;
列表bs2=新列表()
{
新的B(a2){id=300,A=a2},
新的B(a2){id=300,A=a2}
};
a2.B收集=bs2;
返回;
}
a、 b收集将ISActive设置为true

a2.B收集将isAActive设置为false

我不知道有什么方法可以从fluent api或属性绑定中设置它,就像您想要的那样,但是您可能需要查看对象映射器(如Automapper)来帮助您。这个链接可能会让你有点感兴趣。"". 它使用即时加载来更新id。您可以替换为isAActive。我认为您的实体应该尽可能地映射到数据库架构,否则表示非规范化。您试图描述的内容看起来像“域模型”,它应该代表系统或业务域的更好版本[因为数据库/实体模型受数据库设计原则的约束]。在我看来,
B.isActive
B.a.isActive
的值相同,您只需从导航属性获取
isactive