gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 15:58:18 26 4
gpt4 key购买 nike

我不确定这是 ODataWCFEF 还是其他问题;我是新手,这些线条仍然很模糊。

我一直在尝试在 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,这似乎是客户端映射问题。是否有可能使这种行为起作用?

最佳答案

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

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);

关于c# - 可以使用相关实体(而不是相关 ID)使用 OData 创建实体吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22512171/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com