4

我开始使用 OData 和实体框架。

我创建了一个公开客户的控制器。在模型(edmx)中只有一个实体(客户)并且一切正常(正在呈现数据)。

现在,当我添加第二个实体(订单)(从数据库更新模型,选择订单)时,1 到多(1 客户到多订单)会自动设置。

我什么都不做,当我编译/运行控制器时,我得到这个错误:

Line 23:         builder.EntitySet(Of Customer)("Customers")
Line 24:         Return builder.GetEdmModel()  --> Exception Here
Line 25: 
Line 26:     End Function

复杂类型“WebTools.Order”通过属性“Customer”引用实体类型“WebTools.Customer”。

如果我删除订单实体,它会起作用。

我不确定问题出在方程式的 OData/WebAPI 部分的“配置”还是“实体框架”上。

4

1 回答 1

16

我假设模型构建器无法找出实体类型 Order 的关键属性。您可以通过几种方式帮助模型构建者,

  1. builder.EntitySet<Order>("orders");. 这添加了一个新的实体集“订单”,并且还具有将类型“订单”标记为实体类型的效果。您还必须指定“订单”的关键属性。

  2. 使用属性标记“订单”类型上的关键属性(或属性)[Key]

  3. 如果您讨厌属性并喜欢在代码中执行它,您可以这样做,builder.EntitySet<Order>("orders").EntityType.HasKey(o => order.KeyProperty);

于 2013-03-15T18:24:58.793 回答