DTOとして機能するPOCOにEFエンティティをマッピングしている問題を解決しようとしています。
データベース内に Products と Categories という 2 つのテーブルがあります。製品は 1 つのカテゴリに属し、1 つのカテゴリには多くの製品が含まれる場合があります。私の EF エンティティは、efProduct および efCategory という名前です。各エンティティ内には、efProduct と efCategory の間に適切なナビゲーション プロパティがあります。
私のPocoオブジェクトはシンプルです
public class Product
{
public string Name { get; set; }
public int ID { get; set; }
public double Price { get; set; }
public Category ProductType { get; set; }
}
public class Category
{
public int ID { get; set; }
public string Name { get; set; }
public List<Product> products { get; set; }
}
製品のリストを取得するには、次のようなことができます
public IQueryable<Product> GetProducts()
{
return from p in ctx.Products
select new Product
{
ID = p.ID,
Name = p.Name,
Price = p.Price
ProductType = p.Category
};
}
ただし、p.Category は efCategory 型であるため、型の不一致エラーが発生します。どうすればこれを解決できますか? つまり、どのように p.Category を Category 型に変換できますか?
同様に私がするとき
return from c in ctx.Categories
where c.ID == id
select new Category
{
ID = c.ID,
Name = c.Name,
ProductList = c.Products;
};
ProductList のタイプが Product であり、c.Products が EntityCollection であるため、不一致が発生します。
.NET EF で POCO のサポートが追加されたことは知っていますが、.NET 3.5 SP1 を使用せざるを得ません。