我开始使用OData和Entity Framework。
我创建了一个暴露客户的Controller。在模型(edmx)中,只有一个实体(Customer),一切正常(数据正在呈现)。
现在,当我添加第二个实体(订单)(从数据库更新模型,选择订单)时,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部分的“配置”有关。
答案 0 :(得分:14)
我假设模型构建器无法找出实体类型Order的键属性。您可以通过几种方式帮助模型构建器
builder.EntitySet<Order>("orders");
。这会添加新的实体集“订单”,并且还具有将“订单”类型标记为实体类型的效果。您还必须指定“订单”的关键属性。
使用[Key]
属性标记“订单”类型的关键属性(或属性)。
如果您讨厌属性并希望在代码中执行此操作,则可以执行builder.EntitySet<Order>("orders").EntityType.HasKey(o => order.KeyProperty);