2016-05-31 2 views
1

Похожи, кстати, как частные/защищенные свойства, отображенные на дб были изменены в ядре EntityFrameworkEntityFramework ядра (7) как карта защищено/личные свойства

Так что я должен сделать, чтобы быть в состоянии правильно отобразить этот класс:

class Model 
{ 
    protected string _roles {get; set;} 
    [NotMapped] 
    public IEnumerables<RoleName> Roles => Parser_rolesToRoleNames(_roles) 
} 

ответ

1

Я не понимаю вашу 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(); 
     } 

Таким образом, все значения ваших личных свойств добавляются в соответствующих записи отслеживания изменений и записываются к базе данных по вставке/обновлению.

+0

Означает ли это, что я могу сделать таблицу только для чтения с точки зрения EF, просто сделав свойство частным, а не переопределяя 'SaveChanges'? –

+0

Имя свойства - это Роли, и он использует новый синтаксис свойств выражения lamba C# 6. «Свойства и индексы могут иметь геттеры и сеттеры. Органы выражения могут использоваться для записи свойств только для геттера и индексаторов, где тело получателя задается формулой тело выражения "https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6 – pwdst

Смежные вопросы