Отношения от EF View до EF Table - PullRequest
0 голосов
/ 28 февраля 2020

Я успешно создал 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");
            });
    }

Я бы теперь хотелось бы иметь возможность добавить отношение к моему классу пользователя таким способом, но это не работает.

Я получаю эту ошибку:

Невозможно определить представленное отношение по свойству навигации «AppUser.AppUserClaims» типа «ICollection». Либо настройте отношение вручную, либо игнорируйте это свойство с помощью атрибута [NotMapped] или с помощью EntityTypeBuilder.Ignore в OnModelCreating.

, и вот как я попытался добавить отношение в мой AppUserClass:

public ICollection<AppUserClaim> AppUserClaims { get; set; }

1 Ответ

0 голосов
/ 28 февраля 2020

Не уверен на 100%, но я думаю, что-то подобное должно работать.

    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 - сущность представления.

Это должно добавить связь между ваш стол и ваш взгляд.

...