我必须在Web API项目中实现OData API。
关于这样做的文章非常好here(实体关系)和here(复合关键字)。但所有来源都使用数据注释来设置密钥。
在我的项目中,实体的所有约束都是在上下文类中使用Fluent Api定义的。
public class DataContext : DbContext
{
public DataContext()
{
}
public virtual DbSet<Person> Person { get; set; }
public virtual DbSet<Car> Car { get; set; }
...
...
protected override void OnModelCreating(DbModelBuilder mb)
{
...
mb.Entity<Person>().HasKey(jq => new { p.Key1, p.Key2 });
...
}
}
要使用OData,我必须在WebApi.config中注册各个实体。
ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<Person>("Person");
如何在WebApi.config
中为其注册约束?
是否有任何解决方案没有声明密钥(使用数据注释)?
许多Web Api控制器已经在使用实体设计。因此,我希望重用现有模型,而不必仅重新定义一个OData控制器的约束。
答案 0 :(得分:2)
我不确定如何或者是否可以重用上下文类中的键,但是您可以使用从{{返回的对象)在WebApi.config中创建的实体集上设置它们。 1}}这样的方法:
EntitySet