如何在具有多对多关系且没有主键的表中使用OData

问题描述 投票:0回答:1

我有一个具有多对多关系的表:

public class ServiceEquipment
{
    [ForeignKey("Service")]
    public long ServiceRef { get; set; }
    public Service Service { get; set; }
    [ForeignKey("Equipment")]
    public long EquipmentRef { get; set; }
    public Equipment Equipment { get; set; }
}

我对 OData 使用以下 EDM 模型:

static IEdmModel GetEdmModel()
{
    ODataConventionModelBuilder builder = new();
    .
    .
    .
    builder.EntitySet<ServiceEquipment>("ServiceEquipments");
    return builder.GetEdmModel();
}

以下是我的 OData 控制器:

public class ServiceEquipmentsController : ODataController
    {
        private readonly SqlServerContext _sqlServerContext;

        public ServiceEquipmentsController(SqlServerContext sqlServerContext)
        {
            _sqlServerContext = sqlServerContext;
        }

        [HttpGet]
        [EnableQuery]
        public IQueryable<ServiceEquipment> Get()
        {
            IQueryable<ServiceEquipment> srEqList = _sqlServerContext.ServiceEquipment.AsQueryable();

            return srEqList;
        }
    }

当我运行代码时,EDM 的第

builder.EntitySet<ServiceEquipment>("ServiceEquipments");
行出现错误,并显示:

System.InvalidOperationException:'实体集'ServiceEquipments' 基于没有键的“ArtaNG_API.Models.ServiceEquipment”类型 定义。'

有什么方法可以在这个表上使用OData吗?

c# odata
1个回答
1
投票

我通过向

[key]
添加
public long ServiceRef { get; set; }
属性解决了我自己的问题。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.