2013-03-15 93 views
3

是否有可能創建一個未映射到數據庫中的表的實體?實體框架 - 未映射的實體。可能?

我創建了一個包含5個屬性(名稱,電話號碼,電子郵件,日期,評論)的實體(A)。我的數據庫中沒有名爲A的表。

我使用LINQ和結果轉換爲類型(A)的列表

IList<A> results = new IList<A>(); 
results = (from m in B 
      where m.Id < 10 
      select new { m.name, m.email, m.date, m.phone, m.comment }).ToList(); 
return View(results) 

我這樣做是從傳遞一個匿名類型我的看法,以防止查詢在我的模型中的其它表。

+1

未映射的實體,有什麼好處?那麼爲什麼不創建一個類呢? – 2013-03-15 15:35:25

+0

上課嗎?這是星期五我的大腦即將關閉。但爲什麼沒有未映射的實體工作? – 2013-03-15 17:39:46

+0

有人告訴我,不是創建一個實體,我可以創建一個複雜類型 – 2013-03-15 19:09:36

回答

1

首先,由於您將變量results分配給某個變量,因此不需要創建新列表。下面的工作:

IList<A> results;  // No value yet. 

然後你可以實例A就像你本來做。

results = (from m in B 
      where m.Id < 10 
      select new A(m.name, m.email, m.date, m.phone, m.comment)) 
      .ToList(); 

return View(results) 

但是,您的假設在這裏是錯誤的。你說:我將結果轉換爲A類型的列表,以防止將匿名類型傳遞給我的視圖,但您對匿名類型的想法不正確。

以下將不是創建一個匿名類型。這將創建一個非常unanonymous IEnumerable<A>IQueryable<A>

var results = from m in B 
       select new A(); 

但是,以下創建一個匿名類型:

var results = from m in B 
       select new { 
        Name = m.name, 
        Email = m.email, 
        Date = m.date, 
        Phone = m.phone, 
        Comment = m.comment 
       }; 
+0

我想你可以使用automapper來做到這一點。 – 2013-03-15 15:34:27

+0

我的代碼是錯誤的。我輸入了那個內存 – 2013-03-15 17:33:32