Estoy construyendo sitio web ASP MVC utilizando Entity Framework 4.4 con .NET Framework 4.0Marco de la entidad muchos a muchos de migración de base de datos
He añadir a mi modelo de una relación de muchos a muchos, así:
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; }
}
Cuando corro Add-Migration
comando consigo esta clase de migración (I eliminar el método de Down)
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);
}
}
¿Por qué los nombres de campo para TenantID y UserID son User_UserID y Tenant_TenantID y no UserID y TenantID, respectivamente?
¿Cómo puedo cambiar el andamio de migración predeterminado (o mi modelo) para hacer que cascadeDelete sea falso? (actualmente simplemente lo cambio a mano).
Gracias, eso responde la segunda pregunta. –
¿Qué claridad buscabas en tu primera pregunta? En el enlace provisto se explica que la prioridad se da a '' al decidir los nombres de FK. –
esta convención de nombres ocurre solo en muchos a muchos. Cuando asigno uno a muchos obtuve el nombre de campo EntityID sin el nombre de propiedad de navegación –