[英]EF Code First Many-to-Many Relationship with ASP.NET Identity Table at one Side
[英]Many to Many Relationship Code First Identity
我正在嘗試在類和用戶身份之間建立多對多的關系,我的代碼如下
語境:
public class ApplicationUser : IdentityUser
{
public virtual ICollection<Estacion> Estaciones { get; set; }
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("ApplicationDbContext")
{
}
public DbSet<Estacion> Estaciones { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Estacion>().HasMany(u => u.Usuarios).WithMany(e => e.Estaciones);
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}
}
public class Estacion
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int NoEstacion { get; set; }
public string Nombre { get; set; }
public string RFC { get; set; }
public virtual ICollection<ApplicationUser> Usuarios { get; set; }
}
控制器
public ActionResult About()
{
//Busca la estacion con Id 12345
using(ApplicationDbContext context = new ApplicationDbContext())
{
Estacion estacion = context.Estaciones.SingleOrDefault(e => e.NoEstacion == 12345);
UserManager<ApplicationUser> UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
var usuario = UserManager.FindByName("Ale");
estacion.Usuarios = new List<ApplicationUser>() { usuario };
context.SaveChanges();
ViewBag.Message = "Datos guardados";
}
return View();
}
錯誤:
Se produjo una excepción de tipo 'System.InvalidOperationException' en EntityFramework.dll pero no se controló en el código del usuario
Información adicional: No se puede definir la relación entre dos objetos porque están asociados a objetos ObjectContext diferentes。
錯誤說他們在不同的上下文中,但只有一個,我做錯了什么?
“錯誤表明他們處於不同的上下文中,但只有一個”
using(ApplicationDbContext context = new ApplicationDbContext())
{
UserManager<ApplicationUser> UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>
(new ApplicationDbContext()));
}
這里有兩個 ApplicationDbContext 實例。
嘗試
public ActionResult About()
{
//Busca la estacion con Id 12345
using(ApplicationDbContext context = new ApplicationDbContext())
{
var estacion = context.Estaciones.SingleOrDefault(e => e.NoEstacion == 12345);
var userManager = new UserManager<ApplicationUser>
(new UserStore<ApplicationUser>(context));
var usuario = userManager.FindByName("Ale");
estacion.Usuarios = new List<ApplicationUser>() { usuario };
context.SaveChanges();
ViewBag.Message = "Datos guardados";
}
return View();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.