如何在ODataV4中使用自定义类而不是designer.cs中的类

如何在ODataV4中使用自定义类而不是designer.cs中的类,odata,Odata,C#Web.Api Odata应用程序 我第一次实现了ODataV4,希望使用我自己的自定义类,而不是设计器中的数据类 以下是我所做的: 我在Visual Studio中创建了一个数据项目,并添加了我的SQL Linq数据表“Video” 我创建的数据上下文如下所示: public class VideoDataContext : DbContext { public VideoDataContext(): base("name=VideoData") { DbSet<VideoEf>

C#Web.Api Odata应用程序

我第一次实现了ODataV4,希望使用我自己的自定义类,而不是设计器中的数据类

以下是我所做的:

我在Visual Studio中创建了一个数据项目,并添加了我的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();
}
当我打电话获取视频实体时,我不断收到“406不可接受”错误消息

如何确保从数据库返回的数据映射到自定义模型

我的模型生成器正确吗


什么可能导致上述错误?

您不需要返回IQueryable,因为您有EnableQuery属性,只需返回DbSet即可

您也不需要任何wcf属性和
EntityTypeConfiguration titleType=builder.EntityType()

那它应该就行了。 希望能有帮助

编辑 我对IQueryable的错误,我也使用它

public class VideoController : ODataController
{
VideoDataContext  db = new VideoDataContext  ();
[EnableQuery(PageSize = 20, MaxExpansionDepth = 5)]
public IHttpActionResult Get()
{
return Ok(db.Videos.AsQueryable());
}