如何扩展应用程序用户保存订单的集合



我正在尝试扩展应用程序用户(使用Code-First)保存订单集合,但是我会遇到错误。

我的订单课是

public class Order
{
    public Order()
    {
        OrderDetails = new HashSet<OrderDetails>();
    }
    public int ID { get; set; }
    public DateTime OrderDate { get; set; }
    public string UserId { get; set; }
    public bool IsDelivered { get; set; }
    public bool IsReturned { get; set; }
    public virtual ApplicationUser User { get; set; }
    public virtual ICollection<OrderDetails> OrderDetails { get; set; }
}

我正在尝试像这样扩展应用程序用户

public class ApplicationUser : IdentityUser
{
    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
    {
        // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
        var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
        // Add custom user claims here
        return userIdentity;
    }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    
    public string CompanyName { get; set; }
    public string Profession { get; set; }
    public string TaxAuthority { get; set; }
    public string TaxNumber { get; set; }
    public string Address { get; set; }
    public string PostalCode { get; set; }
    public string City { get; set; }
    public string Region { get; set; }
    public string Country { get; set; }
    public string Phone { get; set; }
    public string MobilePhone { get; set; }
    public bool NewsLetterSubscribe { get; set; } = false;
    public DateTime TimeStamp { get; set; } = DateTime.Now;
    public  ICollection<Order> Orders { get; set; }
}

我会遇到以下错误:

qcms.models.indentityuserlogin :: entityType'IdentityUserlogin'没有键定义。定义该实体类型的密钥。

qcms.models.indentityuserrole :: entityType" IdentityUserrole"没有定义键。定义该实体类型的密钥。

IdentityUserLogins:EntityType:EntitySet'IdentityUserLogins'基于未定义键的类型" IdentityUserlogin"。

IdentitySerroles:EntityType:EntitySet'IdentityUserroles'基于未定义键的类型" IdentitySerrole"。

您能帮我解决这个问题吗?

更新:

我正在使用两个DB上下文。为单个用户帐户(首次创建项目时)和第二个名为" QVModel"的一个提供的内容。那是我项目的所有其他数据库类别。

public partial class qvModel : DbContext
{
    public qvModel()
        : base("name=qvModel")
    {
    }
    //APPSETTINGS
    public virtual DbSet<AdminLog> AdminLog { get; set; }
    public virtual DbSet<WebLog> WebLog { get; set; }
    //LANGUAGES
    public virtual DbSet<Language> Languages { get; set; }
    
    .
    .
    .
    public virtual DbSet<Order> Orders { get; set; }
    public virtual DbSet<OrderDetails> OrderDetails { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        
        // Precision attribute for decimals
        Precision.ConfigureModelBuilder(modelBuilder);
        modelBuilder.Entity<Language>()
            .HasMany(e => e.Brochures)
            .WithRequired(e => e.Language)
            .WillCascadeOnDelete(true);
        .
        .
        .
        modelBuilder.Entity<Order>()
            .HasMany(c => c.OrderDetails)
            .WithRequired(c => c.Order)
            .WillCascadeOnDelete(true);
        modelBuilder.Entity<ApplicationUser>()
            .HasMany(c => c.Orders)
            .WithRequired(c => c.User)
            .WillCascadeOnDelete(true);
        base.OnModelCreating(modelBuilder);
        
    }
}

我找到了一个非常简单的解决方案。解决方案是从SIDENTITYDBCONTEXT继承

public class qvModel : IdentityDbContext<ApplicationUser>
{
    public qvModel()
        : base("name=qvModel")
    {
    }

我也缺少从on ModeLcreating

的以下行
base.OnModelCreating(modelBuilder);

这些更改后,我的迁移正在起作用,我停止收到我提到的错误。

相关内容

  • 没有找到相关文章

最新更新