我已经成功创建了一个EF Core,可以映射到我的视图。如何将视图关系添加到其他实体类?
这里是视图:
public class AppUserClaim
{
[Key]
public int ClaimId { get; set; }
public string ClaimType { get; set; }
public int AppUserId { get; set; }
public string AppUserDisplayName { get; set; }
public string FriendlyClaimName { get; set; }
}
在我的DBContext中
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder
.Entity<AppUserClaim>(appUserClaim =>
{
appUserClaim.HasNoKey();
appUserClaim.ToView("View_AppUserClaims");
});
}
我现在希望能够以这种方式将关系添加到我的用户类中,但是它不起作用。
我收到此错误:
无法确定类型为'ICollection'的导航属性'AppUser.AppUserClaims'所表示的关系。手动配置关系,或者使用'[NotMapped]'属性或'OnModelCreating'中的'EntityTypeBuilder.Ignore'忽略此属性。
这就是我尝试将关系添加到我的AppUserClass的方式:
public ICollection<AppUserClaim> AppUserClaims { get; set; }
不太确定,但我认为类似的方法应该可以。
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
var table1Entity = modelBuilder.Entity<Table1>();
table1Entity.ToTable(nameof(Table1));
table1Entity.HasKey(i => i.Id);
table1Entity.Property(i => i.Id).UseSqlServerIdentityColumn();
var view1Query = modelBuilder.Query<View1>(); // we assume this view already exists in the DB
view1Query.ToView(nameof(View1));
view1Query.HasOne(i => i.Table1).WithMany().HasForeignKey(i => i.Table1Id);
}
其中Table1是表实体,而View1是视图实体。
这应该在表和视图之间添加关系。