2013-02-05 66 views
0

我试着去设置一个外键与使用导航属性?

  protected void AdresDetailsView_ItemInserting(object sender,  DetailsViewInsertEventArgs e) 
     { 
      var Id = Convert.ToInt32(CustomerDropDownList.SelectedValue); 
      e.Values["Customer_Id"] = Id; 
     } 

这不工作,因为我的实体(住址)不会有一个属性CUSTOMER_ID。
Customer_Id是数据库中的列名,我应该使用Customer属性,这是导航属性。
但我不知道如何。

我使用EF 4.5

+0

您应该在应用程序的某个位置拥有由您的域类实体框架生成的代码。即使你没有先使用代码。 – IronMan84

回答

1

最简单的方法是修改您的导航性能,使用外键的属性。这可以让你的班级同时拥有一个Customer和一个CustomerId/Customer_Id /任何你想要的财产,保持同步。然后,您可以按照现在的方式更新客户ID。但是,您不指定使用哪个版本的EF,而旧版本不支持外键属性。

如果外键属性不是选项,则需要确保在您的上下文中存在ID为Id的客户。这将类似于var customer = context.Customers.SingleOrDefault(c => c.Id == Id);然后,您可以将Customer属性设置为该特定客户。

+0

ohh对不起,我使用EF 4.5,现在包含在我的问题 –

+0

如果我尝试使用您的代码,我得到“名称”上下文“在当前上下文中不存在”作为compiller错误 –

+0

@MichielT“类似” :)你需要使用你已经创建的上下文。我不知道你是如何命名它的。或者你正在使用一些能够在幕后为你创建它的东西。除此之外,使用.NET 4.5的EF,你应该可以使用外键,所以你不需要走复杂的路线。 – hvd

1

您是否使用Code First?如果是这样,我会建议创建您自己的外键属性,并使用Fluent API来确定您的约束和关系。