0

次のテーブルがあります。

  1. 製品(pro_iIDX[PK], pro_sName)
  2. メーカー(man_iIDX[PK], man_sName)
  3. ProductManufacturer(pma_iIDX[PK]、pma_iProductRef[FK]、pma_iManufacturerRef[FK]、pma_bAvailable)

私は次のPOCOを持っています。

public class ProductInfo  
{  
    public int IDX { get; set; }  
    public string Name { get; set; }

    public virtual ICollection<ProductManufacturerInfo> C0ProductManufacturers 
        { get; set; }  
}  

public class ManufacturerInfo  
{  
    public int IDX { get; set; }  
    public string Name { get; set; }  

    public virtual ICollection<ProductManufacturerInfo> C0ProductManufacturers 
        { get; set; }  
}  

public class ProductManufacturerInfo  
{  
    public int IDX { get; set; }  
    public bool Available { get; set; }  

    public virtual ManufacturerInfo C0Manufacturer { get; set; }  
    public virtual ProductInfo C0ProductInfo { get; set; }  
}

次のマッピングを使用しましたが、成功しませんでした。

public ProductManufacturerConfiguration()  
{  
    ToTable("ProductManufacturer");  
    HasKey(p => p.IDX);  
    Property(p => p.IDX).HasColumnName("pma_iIDX");  
    Property(p => p.Available).HasColumnName("pma_bAvailable");  
    Property(p => p.ProductRef).HasColumnName("pma_iProductRef");  
    Property(p => p.ManufacturerRef).HasColumnName("pma_iManufacturerRef");  

    //I have tried  
    HasRequired(p => p.ManufacturerInfo)
            .WithMany(c => c.C0ProductManufacturers)
            .Map(m => m.MapKey("pma_iManufacturerRef"));  
    HasRequired(p => p.ProductInfo)
            .WithMany(c => c.C0ProductManufacturers)
            .Map(m => m.MapKey("pma_iProductRef"));  

    //As well as  
    HasRequired(p => p.C0Manufacturer)
            .WithMany(c => c.C0ProductManufacturers)
            .HasForeignKey(p => p.ManufacturerRef);  
    HasRequired(p => p.C0Product)
            .WithMany(c => c.C0ProductManufacturers)
            .HasForeignKey(p => p.C0Product);
}

ManufacturerInfo_IDX私の試行から、dB は最初に、以下を実行したときに見つからないことについて不平を言います。

var query = from p in _context.Product  
    select p;

コードの最初のルートに行くと、次のテーブルが作成されます。

ProductManufacturer(
            pma_iIDX[PK], 
            pma_iProductRef, 
            pma_iManufacturerRef, 
            pma_bAvailable, 
            ManufacturerInfo_IDX, 
            ProductInfo_IDX)

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

4

2 に答える 2

1

あなたが提供したサンプルがコンパイルされていないため、実際のコードであるとはほとんど信じていません。問題を示すために実際のコードをコピーするのは難しいですか?

これは機能します:

public class ProductInfo
{
    public int IDX { get; set; }
    public string Name { get; set; }

    public virtual ICollection<ProductManufacturerInfo> C0ProductManufacturers
    { get; set; }
}

public class ManufacturerInfo
{
    public int IDX { get; set; }
    public string Name { get; set; }

    public virtual ICollection<ProductManufacturerInfo> C0ProductManufacturers
    { get; set; }
}

public class ProductManufacturerInfo
{
    public int IDX { get; set; }
    public bool Available { get; set; }

    public int ManufacturerRef { get; set; }        
    public virtual ManufacturerInfo C0Manufacturer { get; set; }

    public int ProductRef { get; set; }
    public virtual ProductInfo C0ProductInfo { get; set; }
}

public class ProductManufacturerConfiguration : EntityTypeConfiguration<ProductManufacturerInfo>
{
    public ProductManufacturerConfiguration()  
    {  
        ToTable("ProductManufacturer");  
        HasKey(p => p.IDX);  
        Property(p => p.IDX).HasColumnName("pma_iIDX");  
        Property(p => p.Available).HasColumnName("pma_bAvailable");
        Property(p => p.ProductRef).HasColumnName("pma_iProductRef");
        Property(p => p.ManufacturerRef).HasColumnName("pma_iManufacturerRef");  

        //I have tried  
        HasRequired(p => p.C0Manufacturer)
                .WithMany(c => c.C0ProductManufacturers)
                .Map(m => m.MapKey("pma_iManufacturerRef"));
        HasRequired(p => p.C0ProductInfo)
                .WithMany(c => c.C0ProductManufacturers)
                .Map(m => m.MapKey("pma_iProductRef"));  

        //As well as  
        HasRequired(p => p.C0Manufacturer)
                .WithMany(c => c.C0ProductManufacturers)
                .HasForeignKey(p => p.ManufacturerRef);  
        HasRequired(p => p.C0ProductInfo)
                .WithMany(c => c.C0ProductManufacturers)
                .HasForeignKey(p => p.ProductRef);
    }
}
于 2011-04-09T18:57:52.443 に答える