簡體   English   中英

具有IdentityUser的MVC 5 Razor代碼優先EF連接表

[英]MVC 5 Razor code-first EF Junction Table with IdentityUser

所以我有這兩個類,並且User來自各個用戶帳戶

public class User : IdentityUser
{
    [Required]
    public string FirstName { get; set; }
    [Required]
    public string LastName { get; set; }
    [Required]
    public string Email { get; set; }      
    public virtual ICollection<Basket> Baskets { get; set; }     
}

public class Basket
{
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    [Key]
    public int BasketId { get; set; }
    public string Name { get; set; }
    public int Words { get; set; }

    public virtual ICollection<User> Users { get; set; }
}

EF已使用2 FK創建了UserBaskets。 我在播種班上有一些種子。

我的問題是,如何在控制器的聯結表中添加行? 例如,一個登錄用戶單擊購物籃並返回ID ...現在我已經

        [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Basket(int? basketid)
    {
        if (ModelState.IsValid)
        {
            var job = User.Identity.GetUserId();
            job.Baskets.Add(basketid);
            db.Users.Add(job);
            db.SaveChanges();
            return RedirectToAction("Basket");
        }

        return View(db.Baskets.ToList());
    }

感謝您的任何幫助。

我終於選擇手動添加聯結表

public class UserBasket
{
    [Key]
    public int UserBasketId { get; set; }

    public virtual User User { get; set; }

    public virtual Basket Basket { get; set; }

    public DateTime Date { get; set; }
}

並可以使用identityUser這樣添加一行

UserManager<User> userManager = new UserManager<User>(new UserStore<User>(db));
var user = userManager.FindById(User.Identity.GetUserId());
Basket basket = db.Basket.Find(id);
var userbasket = new UserBasket {User = user, Basket = basket, Date = DateTime.Now };
db.UserBasket.Add(userbasket);
db.SaveChanges();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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