从EF视图到EF表的关系

问题描述 投票:0回答:1

我已经成功创建了一个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; }
c# entity-framework-core sql-view
1个回答
0
投票

不太确定,但我认为类似的方法应该可以。

    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是视图实体。

这应该在表和视图之间添加关系。

© www.soinside.com 2019 - 2024. All rights reserved.