【问题标题】:ASP.NET Web API Identity property from another DbContext来自另一个 DbContext 的 ASP.NET Web API Identity 属性
【发布时间】:2023-05-22 06:32:02
【问题描述】:

我在我的 ASP.NET Web API 项目中有StoreUser 身份和StoreDbContext 我有Product 模型和DbSet

这是我的Product

public class Product
{
    public int Id { get; set; }
    public string CodeName { get; set; }
    public decimal Cost { get; set; }
    public decimal Discount { get; set; }
    public int SoldCount { get; set; }
    public string SellerId { get; set; }
    public virtual StoreUser Seller { get; set; }
    public virtual List<ProductImage> Images { get; set; }
    public virtual List<Category> Categories { get; set; }
    public virtual List<ProductText> Texts { get; set; }
}

这是我的StoreDbContext

public class StoreDbContext: DbContext
{
    public StoreDbContext() : base("MyCoupon")
    {
        Database.SetInitializer(new StoreDbInitialier());
    }

    public DbSet<Product> Products { get; set; }
    public DbSet<ProductText> ProductTexts { get; set; }
    public DbSet<ProductImage> Images { get; set; }
    public DbSet<CategoryText> CategoryTexts { get; set; }
    public DbSet<Category> Categories { get; set; }
    public DbSet<Language> Languages { get; set; }
}

这是我的StoreUserclass

public class StoreUser : IdentityUser
{
    public virtual List<Product> Products { get; set; } = new List<Product>();
}

所以用户可以拥有产品

但是当我想添加它们时 与

[Authorize(Roles = "Seller")]
    public IHttpActionResult Post(Product product)
    {
        var userId = HttpContext.Current.User.Identity.GetUserId();
        var userManager = HttpContext.Current.GetOwinContext().GetUserManager<StoreUserManager>();

        var user = userManager.FindById(userId);
        product.Seller = user;
        _db.Products.Add(product);
        _db.SaveChanges();
        return Ok(product);
    }

我遇到错误

【问题讨论】:

  • 写出/复制粘贴错误。你不拍照吗?
  • 请将错误信息的文本粘贴到您的帖子中。

标签: c# asp.net asp.net-mvc entity-framework asp.net-web-api


【解决方案1】:

你需要打电话给你的StoreDbContext 班级

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);
}

【讨论】: