2017-12-23 28 views
0

注文のコレクションを保持するためにアプリケーションユーザ(コードファーストを使用)を拡張しようとしていますが、エラーが発生しています。アプリケーションのユーザーを拡張して注文のコレクションを保持するにはどうすればよいですか?

QCMS:

マイOrderクラスは

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; } 
} 

のようなアプリケーションのユーザーを拡張しようとしていると私は次のエラーを取得しています。 Models.IdentityUserLogin :: EntityType 'IdentityUserLogin'にはキーが定義されていません。このEntityTypeのキーを定義します。

QCMS.Models.IdentityUserRole :: EntityType 'IdentityUserRole'にはキーが定義されていません。このEntityTypeのキーを定義します。

IdentityUserLogins:EntityType:EntitySet 'IdentityUserLogins'は、キーが定義されていない 'IdentityUserLogin'タイプに基づいています。

IdentityUserRoles:EntityType:EntitySet 'IdentityUserRoles'は、キーが定義されていないタイプ 'IdentityUserRole'に基づいています。

この問題を解決するのに手伝ってもらえますか?

UPDATE:

私は2デシベルのコンテキストを使用しています。個々のユーザーアカウント(プロジェクトが最初に作成されたとき)に提供されたものと、自分のプロジェクトの他のすべてのデータベースクラス用の「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); 

    } 
} 
+0

あなたのIdentityUserLoginタイプはどこですか? – Haytam

+0

私のプロジェクトにIdentityUserLogin、IdentityUserRoleタイプはありません。私は自分のデータベースに2つの異なるコンテキストを使用しています。最初は、プロジェクトを作成したときに個別のユーザーアカウント認証を提供し、2番目はクラスのコンテキストです。 – Stelios

答えて

0

非常に簡単な解決策が見つかりました。 ソリューションは、これらの変更後

base.OnModelCreating(modelBuilder); 

をOnModelCreatingから、私はまた、次の行がありませんでした。この

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

ようIdentityDbContextを継承することで、私の移行が働いていると私は、私が言及したエラーが発生して停止しました。

関連する問題