我有一个具有多对多关系的表:
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吗?
我通过向
[key]
添加 public long ServiceRef { get; set; }
属性解决了我自己的问题。