繁体   English   中英

可以使用相关实体(而不是相关ID)使用OData创建实体吗?

[英]Can one create an entity with OData using related entities (not the related IDs)?

我不确定这是OData问题, WCFEF还是什么? 我是新来的,这些线条仍然模糊。

我一直在尝试使用C#MVC .NET应用程序中的OData服务创建一些实体。 通过使用相关实体的ID来执行此操作似乎很好,例如:

Container c = getContainer();
Foo f = new Foo();
f.Name = "blah";
f.ThingId = 7;
c.AddToFoos(f);
c.SaveChanges();

但是,直接使用相关实体无效。 当使用本地SQL数据库而不是OData服务时,这确实对我有用。 例如:

Container c = getContainer();
Foo f = new Foo();
Thing t = c.Things.Where(v => v.id==7).FirstOrDefault();
f.Name = "blah";
f.Thing = t;
c.AddToFoos(f); // or Attach(f)
c.SaveChanges();

此外,使用SetLink也不起作用。 在所有失败情况下,请求中的Id都设置为0。 SetLink情况下,它具有一个@odata.bind参数。

由于请求中的ID为0,因此这似乎是客户端映射问题。 是否有可能使这种行为起作用?

这与称为批处理的功能有关。 您可以尝试这样的代码:

Container c = getContainer();
Foo f = new Foo();
f.Name = "blah";
c.AddToFoos(f); 

Thing t = c.Things.Where(v => v.id==7).FirstOrDefault();
c.AddLink(f, "Thing", t); // Thing is the Navigation property name from f to t.

c.SaveChanges(SaveChangesOptions.BatchWithSingleChangeset);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM