【发布时间】:2012-02-23 06:59:55
【问题描述】:
大家好,
我尝试在 POCO 类中创建一个非常具体的数据模型,我尝试了很多不同的方法并访问了很多网站,但似乎没有一个涵盖我的具体示例。
所以我要把这个扔出去,希望有人能帮助我。
我有产品,产品有成分。不过,在我们的业务中,这些产品可能由不同的供应商提供,每个供应商的成分略有不同。
所以我有了我的基类:
public class Product
{
public int ProductID { get; set; }
public string ProductNumber { get; set; }
public string Description { get; set; }
public virtual ICollection<Supplier> Suppliers { get; set; }
}
public class Vendor
{
public int VendorID { get; set; }
public string Name { get; set; }
public virtual ICollection<Supplier> Suppliers { get; set; }
}
public class Ingredient
{
public int IngredientID { get; set; }
public string Name { get; set; }
}
public class Supplier
{
public int SupplierID { get; set; }
public virtual ICollection<Product> Products { get; set; }
public virtual ICollection<Vendor> Vendors { get; set; }
}
如您所见,我已经意识到我的模型需要一个连接实体,因为我的成分来自产品的特定供应商,我需要一个称为供应商的连接实体(我认为)。
这是我卡住的地方...我的产品可以由一个或多个供应商提供。每个供应商,每个产品,都会有该产品的成分列表
我什至无法通过是否需要加入实体。
如果我能像这样(或类似的东西)导航数据结构,那就太棒了:
articles[1].Vendors[3].Ingredients;
再一次,我对 Entity Framework 的了解还不够,不知道这是否可能。
我现在的做法感觉……不对。做我想做的事的正确方法是什么?我是否需要连接表,或者我可以以某种方式为产品的供应商导航成分,也许使用模型构建器来制作所需的产品->供应商->成分链接?
任何帮助将不胜感激!
编辑: 我也觉得我对Entity Framework的关系思路理解不够。
所以一个产品可以有多个供应商,这是一对多的关系。但是一个供应商可以有很多产品。那么这实际上是多对多吗?
我绝对可以在 SQL Express 服务器上为我想做的事情建模,但我真的很想使用实体框架。我只是需要更好地了解我的建模要求。
【问题讨论】:
-
看起来
Product、Supplier和Ingredient之间存在三元关系。对吗? -
我必须查找三元关系......但我相信如此。
Product将始终具有一对多Suppliers(供应商),Supplier将具有该产品的一对多ingredients。我还想知道我是否应该携带一套配料并将一组配料与给定产品的供应商联系起来。
标签: entity-framework-4.1 ef-code-first poco