注文のコレクションを保持するためにアプリケーションユーザ(コードファーストを使用)を拡張しようとしていますが、エラーが発生しています。アプリケーションのユーザーを拡張して注文のコレクションを保持するにはどうすればよいですか?
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);
}
}
あなたのIdentityUserLoginタイプはどこですか? – Haytam
私のプロジェクトにIdentityUserLogin、IdentityUserRoleタイプはありません。私は自分のデータベースに2つの異なるコンテキストを使用しています。最初は、プロジェクトを作成したときに個別のユーザーアカウント認証を提供し、2番目はクラスのコンテキストです。 – Stelios