在运行时,我使用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配置中缺少什么吗?已经尝试了很多东西,但是找不到一个好的答案。任何帮助将不胜感激!