在.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对象。
对于我所缺少的任何帮助(来自客户端)将不胜感激。
感谢。
答案 0 :(得分:0)
解决了这个问题。回去重新阅读教程,找到了我所遗漏的内容。类中[ForeignKey(&#34;&#34;)]装饰的组合以及SetLink方法的正确使用。我的错误在于尝试添加实体并在同一个Save操作中创建链接。一旦我创建了实体,保存它,然后执行SetLink(),并保存,我在数据库中有关系。完成此操作后,只需将.Expand()添加到我的查询中,或者使用LoadProperty()来加载关系。