Рекурсивные унаследованные модели вызывают исключение - PullRequest
0 голосов
/ 08 мая 2020
public interface IAuditFields
{
    int CreatedBy { get; set; }
    User Creator { get; set; }
    int? ModifiedBy { get; set; }
    User Modifier { get; set; }
}
public class AuditFields : IAuditFields
{
    public int CreatedBy { get; set; }
    [ForeignKey(nameof(CreatedBy))]
    public User Creator { get; set; }
    public int? ModifiedBy { get; set; }
    [ForeignKey(nameof(ModifiedBy))]
    public User Modifier { get; set; }
}
public class User : AuditFields
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public int ApplicationRoleId { get; set; }
    [ForeignKey("ApplicationRoleId")]
    public ApplicationRole ApplicationRole { get; set; }
}
public class ApplicationRole : AuditFields
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
}

class MyContext : DbContext
{
    public static readonly ILoggerFactory loggerFactory = new LoggerFactory(new List<ILoggerProvider> { new DebugLoggerProvider() });
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        var builder = new SqlConnectionStringBuilder();
        builder.InitialCatalog = "TestDB";
        builder.DataSource = "MYPC\\SQLEXPRESS";
        builder.IntegratedSecurity = true;
        optionsBuilder.UseLoggerFactory(loggerFactory).EnableSensitiveDataLogging().UseSqlServer(builder.ConnectionString);
    }

    public DbSet<ApplicationRole> ApplicationRoles { get; set; }
    public DbSet<User> Users { get; set; }
}


class Program
{


    static void Main(string[] args)
    {
        using (var cont = new MyContext())
        {
            var ddd = EntityFrameworkQueryableExtensions.AsNoTracking<ApplicationRole>(cont.ApplicationRoles);
        }
    }
}

У меня есть следующий пример кода. При вызове AsNoTracking генерируется исключение «Невозможно определить взаимосвязь, представленную свойством навигации ApplicationRole.Creator типа« Пользователь ». Либо вручную ...». Если я удалю свойства Modifier + ModifiedBy, он будет работать отлично. Может ли кто-нибудь помочь мне разрешить эту ситуацию? Версия EFCore - 2.2.6, если это важно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...