[問題] Entity Framework是否能產生巢狀物件
假設兩個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
先感謝各位的幫助
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.18.8
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1436846031.A.741.html
※ 編輯: Peruheru (220.134.18.8), 07/14/2015 12:07:15
→
07/14 12:20, , 1F
07/14 12:20, 1F
→
07/14 12:21, , 2F
07/14 12:21, 2F
→
07/14 12:24, , 3F
07/14 12:24, 3F
→
07/14 12:25, , 4F
07/14 12:25, 4F
老實說那欄位存的是時段
位置1是星期幾,2和3是開始時間,3和4是結束時間
然後也有可能有特殊時段,只能照存
所以會需要4個欄位:特殊資料、星期、開始、結束
這四個欄位合在一起就是針對"某一個時段"的完整描述
然後這樣的時間欄位一共有5個,資料庫寫成 time1 time2 time3...
既然他們都會有一樣的長相,想要用一個class來描述這個"時段"結構
這樣的想法,是比較難以理解的嗎? 囧
其實我甚至還希望可以用集合來表現時段,因為不是每筆資料都會有五個時段描述
只是這樣好像更複雜了
拆開可以呀,就是我最後提到那個做法,把他全部並列成同樣層級的欄位
那就是5 x 4共有20欄而已
我知道可以照上面的做法,只是想問的是有沒有更棒的方式來做
不然也只能這樣了吧 orz
※ 編輯: Peruheru (220.134.18.8), 07/14/2015 13:32:37
推
07/15 21:56, , 5F
07/15 21:56, 5F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):