buduję strony internetowej ASP MVC przy użyciu Entity Framework 4.4 z .NET Framework 4.0Entity Framework wiele do wielu migracji bazy
mam dodać do mojego modelu wiele do wielu relacji tak:
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; }
}
Kiedy biegnę Add-Migration
komendy otrzymuję tę klasę migracji (I usunąć metodę dół)
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);
}
}
Dlaczego nazwy pól TenantID i UserID to User_UserID i Tenant_TenantID, a nie UserID i TenantID, odpowiednio.
Jak zmienić domyślne rusztowanie migracji (lub mój model), aby cascadeDelete było fałszywe? (obecnie po prostu zmieniam go ręcznie).
Dziękuję, że odpowiedź na drugie pytanie. –
Jaką jasność miałeś na pierwszym pytaniu? W podanym linku wyjaśniono, że przy podejmowaniu decyzji o nazwach FK pierwszeństwo ma "". –
ta konwencja nazewnictwa ma miejsce tylko dla wielu osób. Kiedy mapuję jeden do wielu, dostaję tylko nazwę pola EntityID bez nazwy właściwości nawigacji –