使用实体框架为具有引用的列指定值

问题描述:

我在为具有引用的实体分配值时遇到问题。我得到intellisense和所有,但我得到一个空引用异常,当我尝试将它分配给传递到保存到数据库的函数的对象。使用实体框架为具有引用的列指定值

 public ActionResult BookingViewEdit([Bind(Include = "BookingViewID,Enabled,ObjectLimit,RSSenabled")]BookingView bv, int selCustomers) 
    { 
     bv.Customers.CustomerID = selCustomers; 

     _bvs.SaveBookingView(bv); 

需要做什么来为CustomerID赋值? FK键位于“BookingView”表格中,如果我只是点击“bv。”那里没有CustomerID。

在此先感谢

/M

+0

您正在分配给新建的BookingView对象还是已将其至少一次持久保存到数据库? BookingView和客户之间的关系是否与许多客户的预订视图有关?提供数据模型的基础知识似乎在这里很有价值(任何外键都是可空的,等等)。 – 2009-09-23 13:20:31

+0

它们不能为空,每个“BookingView”必须有一个“CustomerID”,不可为空FK – 2009-09-23 16:18:15

是 “客户” 实际上是一个客户,而不是一个列表?

在这种情况下,你可以这样做:

bv.CustomerReference.EntityKey = new EntityKey("MyEntities.Customers", "CustomerId", selCustomers); 

显然,与实际的实体上下文和实体集的名称取代“MyEntities.Customers”。

我会补充说它是极端混淆使用复数参数/属性名称为单个对象。

+0

在我的实体图中没有复数。所以那里的班级被称为客户 – 2009-09-23 14:37:25

+0

该班级应该是客户(就像你拥有它)。实体集名称应该是Customers。自定义参数应该是自定义的(或者,根据FxCop规则,选定的客户更好)。 bv.Customers应该是bv.Customer – 2009-09-23 14:47:50