2

私は最初にコードを書くのが初めてで、DB Context から派生しました。これが私のモデルの抜粋です。

[Table("pm_Material")]
public class Material
{
    public Material()
    {
        this.ProductionStepLogs = new HashSet<ProductionStepLog>();
    }

    [Key]
    public int MaterialId { get; set; }
    public int MaterialTypeId { get; set; }
    public string Description { get; set; }
    public decimal CostRate { get; set; }

    public virtual MaterialType MaterialType { get; set; }
    public virtual ICollection<ProductionStepLog> ProductionStepLogs { get; set; }
}

[Table("pm_ProductionStepLog")]
public class ProductionStepLog
{
    public ProductionStepLog()
    {
        this.Materials = new HashSet<Material>();
    }

    [Key]
    public System.Guid ProductionStepLogId { get; set; }
    public int ProductionStepId { get; set; }
    public System.Guid ProductId { get; set; }
    public Nullable<System.DateTime> BeginStep { get; set; }
    public Nullable<System.DateTime> EndStep { get; set; }
    public int UserId { get; set; }

    public virtual Product Product { get; set; }
    public virtual ProductionStep ProductionStep { get; set; }
    public virtual ICollection<Material> Materials { get; set; }
}

DB作成はうまくいきますが、[Table("pm_ProductionStepLogMaterials")]で自動生成された多対多テーブル「ProductionStepLogMaterials」の名前を指定したいです。

これは可能ですか?

4

2 に答える 2

2

protected override void OnModelCreating(DbModelBuilder modelBuilder)次のように、独自の DBContext クラスをオーバーライドする必要があります。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{    
   modelBuilder.Entity<Material>()
     .HasMany(a => a.ProductionStepLog)
     .WithMany(a => a.Material)
     .Map(x =>
     {
        x.ToTable("NameOfYourTable");
        x.MapLeftKey("MaterialId");
        x.MapRightKey("ProductionStepLogId");
     });
}
于 2013-04-03T09:44:35.433 に答える