2014-11-24 60 views
0

C#Web.Api OData的應用探析如何的OData使用自定義類v4的,而不是從designer.cs類

我執行的OData V4的第一次,想用我自己的自定義類,而不是來自設計者的數據類。

這裏是我做過什麼:

我在視覺工作室創建的數據項目,並添加我的SQL的LINQ數據表中的「視頻」

我創建的數據上下文如下:

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不可接受」的錯誤消息

我怎樣才能確保從數據庫返回的數據映射到我的自定義模型?

我的模型生成器是否正確?

什麼可能導致上述錯誤?

回答

0

您不需要返回IQueryable,因爲您具有EnableQuery屬性,只需返回DbSet即可。

你也不需要任何WCF屬性和EntityTypeConfiguration<VideoEf> titleType = builder.EntityType<VideoEf>();

然後,它應該只是工作。 希望它有幫助。

編輯 我對IQueryable的錯誤,我也使用它。

相關問題