.net odata客户端创建实体关系

时间:2016-01-18 05:59:07

标签: c# .net entity-framework odata

在.Net中使用OData v4,我有两个类,似乎无法将它们之间的实体关系存储在数据库中。

public class Customer
{
   int Id {get;set;}
   ...
}
public class Order
{
    int Id {get;set;}
    public virtual Customer customer {get;set;}
   ...
}

WebApiConfig.cs
    builder.EntitySet<Order>("Orders");
    builder.EntityType<Order>().ContainsRequired(o => o.Customer);
    builder.EntitySet<Customer>("Customers";

And my inline code looks like:
    var cust = new Customer(...);
    var order = new Order(...);
    container.AddToOrders(order);
    container.SetLink(order,"Customer", cust);
    container.SaveChanges();

我没有收到任何错误,但是当我调试控制器时,订单对象中的客户对象为空。如果在控制器中我重置了订单对象中的客户对象,则数据会被正确存储。所以看起来实体框架部分工作正常,只是无法让OData客户端序列化Order对象中的入站Customer对象。

对于我所缺少的任何帮助(来自客户端)将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:0)

解决了这个问题。回去重新阅读教程,找到了我所遗漏的内容。类中[ForeignKey(&#34;&#34;)]装饰的组合以及SetLink方法的正确使用。我的错误在于尝试添加实体并在同一个Save操作中创建链接。一旦我创建了实体,保存它,然后执行SetLink(),并保存,我在数据库中有关系。完成此操作后,只需将.Expand()添加到我的查询中,或者使用LoadProperty()来加载关系。