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, если это важно