2012-02-01 62 views
0

我有两个实体CUSTOMER和ORDER ..有一对多关系从CUSTOMER到ORDER,其中CustomerID是客户和外键的主键在ORDER ..现在我想要在ORDER实体中添加来自CUSTOMER实体的客户名称属性...我已经复制了该属性并将其粘贴到ORDER表中并添加了CUSTOMER表并将此属性映射到CUSTOMER表的相同属性..但是当我尝试验证它时vs给我一个错误是实体框架一对多关系的概念模型中的关联

3024:问题在映射片段起始于线239:必须指定的EntitySet ORDER的所有关键性能(ORDER.OrderID) 映射

回答

0

这是不可能的映射。这种方式不能将Customer表中的财产添加到Order实体中。将多个表中的属性映射到同一个实体具有非常严格的规则,这种情况不可能。

您可以在Order类中公开客户的名称,而无需在映射中定义它。创建Order类的一部分的区域,并添加自定义计算财产(非映射):

public partial class Order 
{ 
    public string CustomerName 
    { 
     get 
     { 
      // Customer is navigation property to Customer entity 
      return Customer.Name; 
     } 
    } 
} 

这将需要加载CustomerOrder(立即加载)或使用延迟加载。此属性也不能用于Linq-to-entities查询。

+0

非常感谢您的回复......我认为您是在讲述代码优先的方法......但我正在做数据库优先的方法并尝试在设计器模式下执行......如果没有任何解决方案这在数据库首先我会去代码第一 – Anup 2012-02-01 15:04:04

+0

不,我也描述数据库的第一种方法。设计师不是为了定义你需要的所有属性。设计器仅用于定义映射,而映射有其严格的规则,您通过在未映射到“订单”表的“Order”实体中定义属性而违反了这些规则。 – 2012-02-01 15:06:38