[英]How to cast an EF4.1 table class to a derived view class?
我使用了Entity Framework,並為我的數據庫生成了edmx。 生成的模板類代表每個表。 我有一個生成的類'Table',從中它已將12個屬性中的4個復制到新接口'ITableModel'中。
var tables = (from t in db.Tables
orderby t.DateReceived descending
select t).Take(100);
var list = tables.AsEnumerable().Cast<ITableModel>().ToList();
您可能會猜到,強制轉換引發了invalidcast異常。 這里的目標是修剪我需要傳遞給視圖(MVC3)的信息,並創建代表該信息的視圖類。 從我收集到的信息來看,這是最佳做法,但是使用這種鑄造方法我是一堵牆。 任何幫助,將不勝感激!
如果不需要表中的所有數據,則無需從數據庫中傳輸它們。 您可以使用:
public class MyProjection : ITableModel
{
public int SomeField { get; set; }
public string SomeField2 { get; set; }
}
並將您的查詢稱為:
var list = db.Tables
.OrderByDescending(t => t.DateReceived)
.Take(100)
.Select(t => new MyProjection
{
SomeField = t.SomeField,
SomeField2 = t.SomeField2
})
.ToList();
Cast
只是如果重寫操作鑄造是可能的,但它需要具體的類型,因為運營商必須創建目標類型的實例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.