Я не понимаю вашу NotMapped-Property, потому что у нее нет названия?
Чтобы сделать EF Основной карту защищенной собственности в любом случае, в вашем DbContext в OnModelCreating использовать EntityTypeBuilder.Property-метод:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Model>()
.Ignore(m => m.NotMappedProperty)
.Property(typeof(string), "_roles");
base.OnModelCreating(modelBuilder);
}
При создании batabase, соответствующий столбец генерируется.
Для того, чтобы EF записать значения частной Недвижимости Болгарии Недвижимости в базу данных, необходимо переопределить SaveChanges
:
public override int SaveChanges()
{
foreach (var entry in ChangeTracker.Entries())
{
foreach (var pi in entry.Entity.GetType().GetProperties(BindingFlags.Instance | BindingFlags.NonPublic))
{
entry.Property(pi.Name).CurrentValue = pi.GetValue(entry.Entity);
}
}
return base.SaveChanges();
}
Таким образом, все значения ваших личных свойств добавляются в соответствующих записи отслеживания изменений и записываются к базе данных по вставке/обновлению.
Означает ли это, что я могу сделать таблицу только для чтения с точки зрения EF, просто сделав свойство частным, а не переопределяя 'SaveChanges'? –
Имя свойства - это Роли, и он использует новый синтаксис свойств выражения lamba C# 6. «Свойства и индексы могут иметь геттеры и сеттеры. Органы выражения могут использоваться для записи свойств только для геттера и индексаторов, где тело получателя задается формулой тело выражения "https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6 – pwdst