C#Web.Api Odata APplication
我是第一次实现Odata V4,并希望使用我自己的自定义类而不是设计器中的数据类。
这是我做的:
我在Visual Studios中创建了一个Data项目,并添加了我的SQL Linq数据表“Video”
我按如下方式创建了数据上下文:
public class VideoDataContext : DbContext
{
public VideoDataContext(): base("name=VideoData")
{
DbSet<VideoEf> Videos { get; set; }
}
我的自定义类如下:
[Serializable]
[DataContract]
public class VideoEf : Repository
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string Isrc { get; set; }
}
模型构建者:
public Microsoft.OData.Edm.IEdmModel GetEdmModel()
{
ODataModelBuilder builder = new ODataConventionModelBuilder();
EntityTypeConfiguration<VideoEf> titleType = builder.EntityType<VideoEf>();
builder.EntitySet<VideoEf>("Video");
return builder.GetEdmModel();
}
在我的视频控制器中:
public class VideoController : ODataController
{
VideoDataContext db = new VideoDataContext ();
[EnableQuery(PageSize = 20, MaxExpansionDepth = 5)]
public IHttpActionResult Get()
{
return Ok(db.Videos.AsQueryable());
}
当我拨打电话获取视频实体时,我一直收到“406 Not Acceptable”错误消息
如何确保从数据库返回的数据映射到我的自定义模型?
我的模型构建器是否正确?
可能导致上述错误的原因是什么?
答案 0 :(得分:0)
您不需要返回IQueryable,因为您具有EnableQuery属性,只需返回DbSet。
您也不需要任何wcf属性和EntityTypeConfiguration<VideoEf> titleType = builder.EntityType<VideoEf>();
然后它应该工作。 希望它有所帮助。
修改强> 我对IQueryable的错误,我也使用它。