【发布时间】:2012-04-15 22:56:34
【问题描述】:
我们有一个名为 Measure 的特定结构,我们想使用这种类型而不是数据库字段类型,例如双倍。
所以我们有一个实体:
public class MyEnity
{
public int MyValue { get; set; }
}
我们有一个传输对象: 公共课 MyDto { 公共测量 MyMeasureValue{ 获取;放; } }
如果属性类型匹配,我们只需为每个投影填充 dto:
enities.Select(i => new MyDto { MyMeasureValue = new Measure(i.MyValue, _unitsService.GetUnit("km")) });
但是由于 EF 不支持这样的语句,我们必须重新填充它,或者加载整个实体:
entities.Select(i => new { MyValue = i.MyValue })
.AsEnumerable()
.Select(i => new MyDto { MyMeasureValue = new Measure(i.MyValue, _unitsService.GetUnit("km")) } );
我们希望在重新填充过程中避免这种循环多次,特别是因为有很多属性要填充。有没有办法我们可以使用第一条语句并教 EF 执行 Measure 创建? (例如拦截等)
PS。创建 EF 复杂类型并对其进行映射不是一种选择!
谢谢恩拉
【问题讨论】:
标签: c# entity-framework projection