Я хочу иметь защищенный список в классе, доступный через методы.В этой теме предлагается создать класс конфигурации внутри класса моей модели, который мне не очень нравится, но пока он работает .. Итак, у меня есть что-то вроде этого:
public class Person
{
public int Id { set; get; }
public string Name { set; get; }
List<string> _address = new List<string>();
protected virtual ICollection<string> address { get { return this._address; } }
[NotMapped]
public string[] Address { get { return this.address.ToArray(); } } // I know it's not efficient.. I'll cache it.
public void AddAddress(string address)
{
// some business logic
this.address.Add(address);
}
public class OneMapping : EntityTypeConfiguration<Person>
{
public OneMapping()
{
this.HasMany(x => x.address);
}
}
}
и в контексте БД:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add<Person>(new Person.OneMapping());
base.OnModelCreating(modelBuilder);
}
Контекст БД выдает это исключение, когда я пытаюсь добавить экземпляр лица:
Свойство навигации 'адрес' не являетсяобъявленное свойство типа «Персона».Убедитесь, что он не был явно исключен из модели и является допустимым свойством навигации.
Так что на самом деле не работает.Попробовал этот пример: Отображение частных свойств с помощью EF 4.1 Не удалось с той же ошибкой.
Еще одно решение - использовать ObservableCollection и связывать бизнес-логику в событиях, но эта логика не нужназапускаться, когда объекты создаются EF - только тогда, когда они создаются пользователем ... что невозможно.
Так что я несколько застрял здесь ... Я надеюсь, что кто-то там уже столкнулся с этим ирешил это ..
Спасибо!