[问题] 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