Entity framework 实体框架一对多关系
嗨,我是实体框架的新手,这是我需要的,有两个类,比如“客户”和“订单”:Entity framework 实体框架一对多关系,entity-framework,ef-code-first,domain-driven-design,Entity Framework,Ef Code First,Domain Driven Design,嗨,我是实体框架的新手,这是我需要的,有两个类,比如“客户”和“订单”: Class CustomerBE { Public int CustomerID{get;set;} …其他属性 } 类OrderBE { 公共int-OrderID{get;set;} Public int CustomerID{get;set;} 公共客户BE客户{get;set} } 如何将订单映射到客户?我已经阅读了一些其他帖子和一些其他示例,他们所做的是在customerBE中创建一个订单icollection
Class CustomerBE
{
Public int CustomerID{get;set;}
…其他属性
}
类OrderBE
{
公共int-OrderID{get;set;}
Public int CustomerID{get;set;}
公共客户BE客户{get;set}
}
如何将订单映射到客户?我已经阅读了一些其他帖子和一些其他示例,他们所做的是在customerBE中创建一个订单icollection,类似:Class CustomerBE
{
Public int CustomerID{get;set;}
Public Virtual ICollection Orders<orderBE>{get;set;}
}
Class CustomerBE
{
Public int CustomerID{get;set;}
公共虚拟ICollection订单{get;set;}
}
然后,他们使用customer类中的orders集合将客户映射为有多个订单,但对我来说,这是错误的,该类的消费者将能够使用customer类中的orders属性访问客户的所有订单,我不知道该让他们做什么:
ICollection customerOrders=customer.Orders//我不知道这是什么
在哪种情况下,我希望获取所有客户订单?通常我们不希望按照给定的条件(日期、状态等)获取客户订单,因此,对我来说,与其使用该属性,不如使用订单存储库按照给定的条件访问客户订单,例如:
ICollection customerOrders=ordersRepository.GetCustomerOrdersByDate(customer.ID,Today.Date)//这是我想要的,而不是orders=customer.orders
因此,任何主体都知道如何使用代码优先的方法在订单和客户之间进行映射,而不必在customer类中使用orders集合?在DbContext类中使用Fluent API:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<OrderBE>().HasRequired(x => x.Customer);
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity().HasRequired(x=>x.Customer);
}
谢谢您的尝试,这将为我的订单加载客户信息,对吗?
ICollection<OrderBE> customerOrders = customer.Orders //I don't what this
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<OrderBE>().HasRequired(x => x.Customer);
}