簡體   English   中英

多對多關系代碼第一身份

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM