の多くは、私はそうのような多くの関係に私のモデルに多くを追加しました.NET Frameworkを使用して4.0Entity Frameworkの多くのデータベース移行
をEntity Frameworkの4.4を使用してASP MVCのWebサイトを構築しています:
public class User {
public int UserID { get; set; }
public string Username { get; set; }
public virtual ICollection<Tenant> Tenants { get; set; }
}
public class Tenant {
public string TenantID { get; set; }
public string Name { get; set; }
public virtual ICollection<User> Users { get; set; }
}
私は、このマイグレーションクラスを取得
Add-Migration
コマンドを実行すると
は
public partial class TenantUsersManyToManyMigration : DbMigration
{
public override void Up()
{
CreateTable(
"dbo.UserTenants",
c => new
{
User_UserID = c.Int(nullable: false),
Tenant_TenantID = c.String(nullable: false, maxLength: 128),
})
.PrimaryKey(t => new { t.User_UserID, t.Tenant_TenantID })
.ForeignKey("dbo.Users", t => t.User_UserID, cascadeDelete: true)
.ForeignKey("dbo.Tenants", t => t.Tenant_TenantID, cascadeDelete: true)
.Index(t => t.User_UserID)
.Index(t => t.Tenant_TenantID);
}
}
(私はダウンの方法を削除します) TenantIDとUserIDのフィールド名がそれぞれUser_UserIDとTenant_TenantIDで、UserIDとTenantIDではないのはなぜですか?
デフォルトのマイグレーションの足場(またはモデル)を変更して、cascadeDeleteをfalseにするにはどうすればよいですか? (現在、私は単にそれを手で変更するだけです)。
ありがとう、それは2番目の質問に答える。 –
あなたの最初の質問にはどんな明快さが求められましたか?提供されているリンクでは、FK名を決定するときに優先順位が '<ナビゲーションプロパティ名><プライマリキーのプロパティ名>'に与えられると説明しています。 –
この命名規則は、多くの場合のみ発生します。私が1つを多数にマップすると、ナビゲーションプロパティ名なしでEntityIDフィールド名だけが得られます –