Measureという特定の構造体があり、この型をデータベースのフィールド型の代わりに使用したいとします。ダブル。投影法を使用してEFでマップされた型を記入しない
だから我々は実体があります
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複合型を作成してマップするオプションはありません。
おかげEnyra
私たちの型は構造体でなければならないので、複合型の型はオプションではありません。 Automapperは解決策になるかもしれませんが、私はこれを明確にしなければなりません。 – Enyra