[問題] Entity Framework是否能產生巢狀物件

作者: Peruheru (還在想)   2015-07-14 11:53:49
假設兩個Class
public class classA
{
public string prop1 { get; set; }
public classB prop2 { get; set; }
}
public class classB
{
public string innerProp1 { get; set; }
public string innerProp2 { get; set; }
}
如上, classA 內有 classB 的結構
而資料庫就是 prop1 和 prop2 兩個文字欄位而已
我得手動將 prop2 拆解成 classB 的結構
沒有什麼複雜的邏輯,就只是第一個字存在 innerProp1 ,之後的字存在 innerProp2
原本想寫成如下的樣子
from q in table1
select new classA
{
prop1 = q.column1,
prop2 = new classB
{
innerProp1 = q.column2.substring(0, 1),
innerProp2 = q.column2.substring(1)
}
}
不過就收到錯誤訊息:
   LINQ to Entities 中僅支援無參數建構函式和初始設定式
這表示無法在查詢時直接產生這樣的結構嗎?
還是說有什麼方法可以達成一次就產生這結構呢?
我在將舊有資料庫寫成.NET Web API
為了要讓column2這欄位也能使用OData去查詢
就必須得先把它拆開
(不過老實說我也不知道拆開後能不能查這種結構...)
其實內部class內是含有文字與數字的,會需要比文字也需要比數字大小
只是為了將問題單純化先省略這部分
另外這個欄位其實有好幾個,全都要做一樣的處理
如果不能產生或不能查的話
說不定就只能寫成這種樣子
public class classA
{
public string prop1 { get; set; }
public string innerProp1 { get; set; }
public string innerProp2 { get; set; }
}
問題是這欄位好幾個,裡面要拆成的欄位也好幾個
若非不得已實在不想這樣做orz
先感謝各位的幫助
作者: GoalBased (Artificail Intelligence)   2015-07-14 12:20:00
你的classA對應talbeA 裡面有兩個字串欄位嗎?如果是的話,不理解你拆成兩個class的用意另外你文中雖然說想要一次就產生,那拆開不行嗎?先把table1資料撈出來,自己組合classA這樣
作者: Litfal (Litfal)   2015-07-15 21:56:00
你要做資料庫正規化...把時段抽出成一個獨立的Table

Links booklink

Contact Us: admin [ a t ] ucptt.com