2013-08-14 3 views
0

Мне нужно добавить новый EntityObject в контекст, когда одно конкретное (рассчитанное) свойство изменяется в другом EntityObject. Кажется, что нет никакого доступа к Контексту из любого EntityObject.Доступ к контексту/другие EntityObjects из частичного класса

Например, мой «Сотрудник» частичный класс имеет настраиваемое свойство:

Public Property Age As Integer 
     Get 
      Return _Age 
     End If 
     End Get 
     Set(value As Integer) 
      'Here based on some conditions, I sometimes need to add a new 
      'EntityObject to (or modify an existing EntityObject) in an EntitySet "Assumptions" 
      'HOW TO DO THAT ? 

     _Age=value 
     End Set 
End Property 
Private _Age as Integer 

... и когда выше «Возраст» установлено, мне иногда нужно создать и добавить один новый EntityObject «Успение "в EntumSet" Предположения ", который находится под тем же Контекстом.

Я знаю, что это не хороший дизайн для доступа к EntityObjects из других EntityObjects, как это, но как я могу решить эту проблему каким-либо другим способом?

ответ

0

Добавьте еще один класс в свое решение, которое является частичным классом вашего EntityObject, с которым вы это делаете.

Добавьте свойство к этому классу:

public partial class EntityObject 
{ 
    private int _age; 
    public List<Assumption> Assumptions { get; set; } 
    public int Age 
    { 
     get { return _age; } 
     set { _age = value; Assumptions.Add(new Assumption("Age", value); } 
    } 
} 

При использовании EF для запроса класса EntityObject, вам нужно «Включить» навигационное свойство в запросе.

var db = new DatabaseContext(); 
var myObjects = db.EntityObjects.Include("Assumption").Where(....).ToList(); 

Это должно сделать вам то, что вам нужно. Затем вы можете инкапсулировать свою логику, чтобы изменить любые предположения по мере необходимости.