簡體   English   中英

如何將EF4.1表類強制轉換為派生視圖類?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM