Это то, что я использую; это основанный на соглашении подход, который просто добавить в проект.
Сначала добавьте хуки в контекст вашего объекта:
public partial class Database1Entities
{
partial void OnContextCreated()
{
this.ObjectMaterialized += (_, e) =>
{
try
{
dynamic entity = e.Entity;
entity.ObjectContext = this;
}
catch (RuntimeBinderException)
{
}
};
this.ObjectStateManager.ObjectStateManagerChanged += (_, e) =>
{
if (e.Action == CollectionChangeAction.Add)
{
try
{
dynamic entity = e.Element;
entity.ObjectContext = this;
}
catch (RuntimeBinderException)
{
}
}
else if (e.Action == CollectionChangeAction.Remove)
{
try
{
dynamic entity = e.Element;
entity.ObjectContext = null;
}
catch (RuntimeBinderException)
{
}
}
};
}
}
Это попытается динамически установить свойство с именем ObjectContext
для любого объекта, связанного с контекстом объекта.
Затем добавьте ObjectContext
к типам сущностей:
public partial class Table1
{
/// <summary>
/// Gets or sets the context for this entity.
/// This should not be set by end-user code; this property will be set
/// automatically as entities are created or added,
/// and will be set to <c>null</c> as entities are detached.
/// </summary>
public Database1Entities ObjectContext { get; set; }
}
Это решение требует добавления свойства ObjectContext
к каждому типу сущности.