将OData与模型继承一起使用会导致缺少属性错误

时间:2018-10-14 03:37:54

标签: entity-framework asp.net-core odata

在运行时,我使用asp.net核心实现在OData中遇到此错误:类型为[XXX.Asset Nullable = True]的EDM实例缺少属性“ externalId”。

当我尝试使用扩展查询访问odata端点时出现问题:“ / odata / v1 / precinct?$ expand = assets”。这似乎是因为我将“ ExternalId”属性放在我的基类中,如果我将该属性放在“ Asset”中就不会发生。

以下是我最近的代码:

public abstract class Entity
{
    public int Id { get; set; }

    public string ExternalId { get; set; }
}
public class Precinct : Entity
{
    public string Name { get; set; }
    public string Description { get; set; }
    public virtual IEnumerable<Asset> Assets { get; set; }

}
public class Asset : Entity
{
    public string Name { get; set; }
    public string Description { get; set; }
}

这是我的ODATA模型配置

public class AssetModelConfiguration : IModelConfiguration
{
    public void Apply(ODataModelBuilder builder, ApiVersion apiVersion)
    {
        var org = builder.EntitySet<Asset>("asset").EntityType;
        org.HasKey(x => x.ExternalId);
        org.Ignore(x => x.Id);

    }
}

奇怪的是,如果我将ExternalId放在“ Asset”类中,则它可以正常工作。在DBModel配置中将“ ExternalId”标记为AlternateKey时,Id属性是主键。

我在odata配置中缺少什么吗?已经尝试了很多东西,但是找不到一个好的答案。任何帮助将不胜感激!

0 个答案:

没有答案