connected properties을 사용하는 다른 해결책이 있습니다. 이 (: 테스트되지 않은 코드 경고) : 같을 것이다 연결 속성을 사용
public partial class Database1Entities
{
private struct ObjectContextProperty { }
partial void OnContextCreated()
{
this.ObjectMaterialized += (_, e) =>
{
e.Entity.GetConnectedProperty<Database1Entities, ObjectContextProperty>().Set(this);
};
this.ObjectStateManager.ObjectStateManagerChanged += (_, e) =>
{
if (e.Action == CollectionChangeAction.Add)
{
e.Element.GetConnectedProperty<Database1Entities, ObjectContextProperty>().Set(this);
}
else if (e.Action == CollectionChangeAction.Remove)
{
e.Element.GetConnectedProperty<Database1Entities, ObjectContextProperty>().Set(null);
}
};
}
/// <summary>
/// Gets the object context for the entity. Returns <c>null</c> if the entity is detached.
/// </summary>
/// <param name="entity">The entity for which to return the object context.</param>
public static Database1Entities FromEntity(EntityObject entity)
{
return entity.GetConnectedProperty<Database1Entities, ObjectContextProperty>().GetOrConnect(null);
}
}
은 그럼 당신은 엔티티 개체에서 개체 컨텍스트를 얻을 수
Database1Entities.FromEntity
를 사용할 수 있습니다. 당신은 또한뿐만 아니라 당신이 원하는 경우 엔티티 객체에 대한 실제 속성을 정의 할 수 있습니다
public partial class Table1
{
/// <summary>
/// Gets the object context for this entity. Returns <c>null</c> if the entity is detached.
/// </summary>
public Database1Entities ObjectContext { get { return Database1Entities.FromEntity(this); } }
}
를이 솔루션에서 ObjectContext
속성을 엔티티는 선택 사항입니다 오브젝트에.
확실한 답변을 보내 주셔서 감사합니다. Ladislav. 나는 당신의 주장에 동의하지 않으면 안됩니다. "가능한 한 많이 피하는 것이 좋습니다." 분명히, 이것에 대한 필요성이 있거나 그것을하는 방법에 대한 질문과 게시물은 결코 쓰여지지 않을 것입니다. 대부분의 엔티티 인스턴스에 대해 ObjectContext에 대한 참조를 가져 오는 방법이 있지만 비효율적입니다.특히 Entity Framework 모델에서 현재 지원되지 않는 데이터 관련 작업이 필요한 확장 메서드를 사용하여 개체 자체에서 개체의 컨텍스트를 검색하는 것이 바람직한 여러 가지 시나리오가 있습니다. –