1

私は次のものを持っています:

  • 製品 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 を設定します。

どんな助けでも大歓迎です。

ありがとう

4

0 に答える 0