我正在使用此示例項目(https://github.com/imranbaloch/ASPNETIdentityWithOnion)作爲我的應用程序體系結構,在此示例中,核心從包括身份框架在內的基礎結構完整地分離出來。從核心域模型解耦ASP.NET身份 - 洋蔥體系結構
在本示例中,作者使用適配器模式來分離核心標識類(IdentityUser,IdentityRole ...)並在核心層中提供類似它們的類。
現在這個示例項目中的問題是,域模型(Product,Images)沒有鏈接到模擬身份的虛擬類(AppUser,ApplicationRole,AppliationUserRoles,...)。
然後,我已經修改了代碼,添加了參考APPUSER
public sealed class Image : BaseEntity
{
public Image()
{
Products = new HashSet<Product>();
}
public string Path { get; set; }
public AppUser AppUser { get; set; } // The Added Reference ...
public ICollection<Product> Products { get; set; }
}
如果我把「APPUSER」導航屬性「圖像」類中,創建的數據庫將具有比其他四個新表默認的身份框架FIVE表。
我需要將這些表合併成默認的。 怎麼樣?
編輯:
這是駐留在數據層中的身份模型(我不能從核心參考)。
public class ApplicationIdentityUser :
IdentityUser<int, ApplicationIdentityUserLogin, ApplicationIdentityUserRole, ApplicationIdentityUserClaim>, IDomainUser {
public ApplicationIdentityUser()
: base() {
Images = new HashSet<Image>();
}
public string Name { get; set; }
public virtual ICollection<Image> Images { get; set; }
}
public class ApplicationIdentityRole : IdentityRole<int, ApplicationIdentityUserRole>
{
public ApplicationIdentityRole(){}
public ApplicationIdentityRole(string name){Name = name;}
}
public class ApplicationIdentityUserRole : IdentityUserRole<int> {}
public class ApplicationIdentityUserClaim : IdentityUserClaim<int>{}
public class ApplicationIdentityUserLogin : IdentityUserLogin<int>{}
而且這是在OnModelCreating方法我的模型構造器:
modelBuilder.Entity<Image>()
.Property(e => e.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
modelBuilder.Entity<Image>()
.HasMany(e => e.Products)
.WithRequired(e => e.Image)
.WillCascadeOnDelete(false);
modelBuilder.Entity<ApplicationIdentityUser>()
.Property(e => e.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
modelBuilder.Entity<ApplicationIdentityRole>()
.Property(e => e.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
modelBuilder.Entity<ApplicationIdentityUserClaim>()
.Property(e => e.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
AspNet *表格是過剩的。需要擺脫他們。檢查你的ApplicationDbContext正在用這些表做什麼? – trailmax 2014-10-27 11:09:47
我的ApplicationDbContext是從IdentityDbContext驅動的,我需要一種方法來存儲用戶信息, 你的意思是我可以使用以Application *開頭的表嗎? – 2014-10-27 13:57:17
我在說應該只有一組*用戶,* UserClaims等表格。看起來你在你的ApplicationDbContext中繼承的方式被破壞了,你不會重寫'Users'和'Roles'等,所以EF爲你創建了兩組表。檢查一下。 – trailmax 2014-10-27 14:11:04