【发布时间】:2016-01-30 11:29:50
【问题描述】:
在 .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 对象。
对于我所缺少的东西(来自客户端)的任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
看看asp.net/web-api/overview/odata-support-in-aspnet-web-api/…。 => "$expand"
-
我已经看到了,这一切似乎从服务器到客户端都可以工作。我的问题似乎是从客户端到服务器,就像我需要扩展对 Order 对象(或类似的东西)的 Add 请求。我通过使用控制器中的 .Include() 在服务器上获得了我需要的行为。在添加包含实体对象的对象时,我似乎只是缺少客户端上触发相反行为的部分。有意义吗?
标签: c# .net entity-framework odata