Доступ к контексту/другим объектам EntityObjects из частичного класса

Мне нужно добавить новый EntityObject в Context, когда одно конкретное (вычисляемое) свойство изменяется в другом EntityObject. Похоже, что нет доступа к контексту из любого объекта EntityObject.

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

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 в «Предположения» EntitySet, который находится в том же контексте.

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


person Nuts    schedule 14.08.2013    source источник


Ответы (1)


Добавьте в свое решение еще один класс, который является частичным классом вашего 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();

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

person Joe Brunscheon    schedule 14.08.2013