gpt4 book ai didi

asp.net-web-api - asp.net webapi odata $metadata 中缺少反向属性

转载 作者:行者123 更新时间:2023-12-02 03:41:00 25 4
gpt4 key购买 nike

两个实体之间的关系非常简单,我正在尝试使用 asp.net webapi odata Controller 公开它们,但 $metadata 似乎有问题。

当我在 $metadata 上运行 jaydatasvcutil.exe 时,我收到警告:inverseProperty 另一侧丢失。

当我使用breezejs loadNavigationProperty时,我收到类似的错误。

即使使用官方示例,我也遇到问题。 http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/working-with-entity-relations

您可以在此处观察 $metadata http://sdrv.ms/Z5Klfw

请帮忙。

最佳答案

当我们生成导航属性时,我们不会重用这些关系。

例如,假设您有简单的模型,

public class Product
{
public int Id { get; set; }
public Supplier Supplier { get; set; }
}
public class Supplier
{
public int Id { get; set; }
public Product[] Products { get; set; }
}

我们生成的导航属性的 $metadata 如下所示,

<NavigationProperty Name="Supplier" Relationship="ProductsService.Models.ProductsService_Models_Product_Supplier_ProductsService_Models_Supplier_SupplierPartner" ToRole="Supplier" FromRole="SupplierPartner" />

<NavigationProperty Name="Products" Relationship="ProductsService.Models.ProductsService_Models_Supplier_Products_ProductsService_Models_Product_ProductsPartner" ToRole="Products" FromRole="ProductsPartner" />

请注意,我们正在生成两种关系而不是一种关系。我们这样做的原因是,弄清楚两个导航属性是否表示相同的关系是一个难题。以产品和制造商为例。

public class Manufacturer
{
public int Id { get; set; }
public Product[] RawMaterials { get; set; }
public Product[] Produces { get; set; }
}
public class Product
{
public int Id { get; set; }
public Manufacturer[] Producers { get; set; }
public Manufacturer[] Consumers { get; set; }
}

弄清楚 Maufacturer.RawMaterials 和 Product.Consumers 应该共享相同的关系以及 Manufaturer.Produces 和 Product.Producers 应该共享相同的关系并非易事。我们选择不这样做,因为我们认识的客户并没有从这些信息中赚到太多钱。

所有这一切的发生是因为 OData 使用与 Entity Framework 相同的 EDM 模型。 Entityframework 需要此信息,因为它将这些关系映射到关联集,这些关联集将成为数据库中的表。

我们选择不这样做的另一个原因是,这可能会在 OData V4 中消失。查看工作草案here (第 23 页和第 57 页会很有趣)。简而言之,OData V4 中 $metadata 中的导航属性看起来更像是这样,

<NavigationProperty Name="Category" Type="Self.Category" Nullable="false" Partner="Products" />

请注意,不存在任何关系,也不存在关联集。

关于asp.net-web-api - asp.net webapi odata $metadata 中缺少反向属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15828643/

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