使用下面的代碼(簡體),我得到的錯誤實體框架4.1:庫與「DefaultOrder屬性」
「無法轉換類型‘System.DateTime的’輸入‘System.Object的’。 LINQ to Entities只支持投射實體數據模型原語類型。「
與return語句行:
public MyRepository<Post>
{
public Expression<Func<Post, object>> DefaultOrder;
public MyRepository()
{
DefaultOrder = p => p.PublishedOn;
}
public IQueryable<Post> All()
{
var entities = new MyDbContext().Set<Post>();
return entities.OrderByDescending(DefaultOrder);
}
}
我使用相同的代碼使用db4o,而不是實體框架/ db4o.Linq也沒有問題。
所以在這裏我的問題:
- 爲什麼這個錯誤發生?
- 有沒有其他的解決方案,它可以讓我像現在一樣(類似)地定義我的DefaultOrder?
編輯:
發現一個溶液,爲我的作品,用命令的方法替換了默認順序表達:
public MyRepository<T>
{
public Func<IQueryable<T>, IOrderedQueryable<T>> DefaultOrderMethod;
public MyRepository()
{
DefaultOrderMethod = o => o.OrderBy(x => x.PublishedOn);
}
public IQueryable<T> All()
{
var entities = new MyDbContext().Set<T>();
return DefaultOrderMethod(entities);
}
}
您是否嘗試事先進行鑄造? ('DefaultOrder = p =>(object)p.PublishedOn;') – AbdouMoumen 2011-04-23 19:29:21
好主意! - 但不幸的是不工作... – davehauser 2011-04-23 19:40:33