私は次のものを持っています:
- 製品 POCO
- EF コード専用の ProductConfiguration クラス (CTP3)
- データベースの製品テーブル
- データベース内の ProductCrossSell テーブル
私の Product および ProductConfiguration クラスは次のようになります。
public class Product
{
public virtual Guid Id { get; set; }
public virtual string Name { get; set; }
public virtual ICollection<Product> CrossSells { get; set; }
}
public class ProductConfiguration : EntityConfiguration<Product>
{
public ProductConfiguration()
{
HasKey(p => p.Id);
Property(p => p.Name).IsRequired().IsUnicode().IsVariableLength().HasMaxLength(254);
// Relationship??
MapSingleType(p => new
{
p.Id,
p.Name
}).ToTable("Product");
}
}
私のデータベーステーブルは次のようになります
CREATE TABLE [dbo].[Product](
[Id] [uniqueidentifier] NOT NULL,
[Name] [nvarchar](254) NOT NULL
CREATE TABLE [dbo].[ProductCrossSell](
[Id] [uniqueidentifier] NOT NULL,
[ProductId] [uniqueidentifier] NOT NULL
これは、製品を他の製品にリンクできる、それ自体に対して多対多の関係を持つ単純な Product テーブルです。
この関係をEFコードでのみ設定する方法を知っている人はいますか? コードで設定されている他の関係の例を見ていますが、これを設定する方法の例はありません。
GetProductById クエリが正常に実行されると、EF は 2 つのテーブルを結合し、Product オブジェクトと CrossSells IColletion を設定します。
どんな助けでも大歓迎です。
ありがとう