2009-07-28 4 views
2

Entity Framework 개체 인 EntityA가있는 경우 작성시 다른 동작을 주입하려면 어떻게해야합니까?어떻게 동작을 Entity Framework Object 생성자에 삽입 할 수 있습니까?

이러한 특정 엔티티는 일부 계산에 대해 다른 전략을 사용해야합니다. 개체를 만들 때 DI를 사용하여 올바른 전략을 제공하고 싶습니다. 요격 할 방법이 있습니까?

올린 날짜 : 아래의 두 패턴에 대해 생각해 봅니다.

 public partial class Entity 
    { 
      public Entity(ICalculationStrategy strategy) 
      { 
       _calcStrategy = strategy; 
      } 
    } 

public partial class Entity 
     { 
       public Entity(ICalculationFactory factory) 
       { 
        _calcStrategy = factory.ProvideCalculator(this); 
       } 
     } 
+0

두 패턴은 크게 다르지 않습니다. 이 특정 인스턴스에서 사용할 전략을 결정하는 요소는 무엇인지 아직 알려주지 않았습니다. – Thorarin

+0

그건 까다로운 부분입니다. 지금 완료되는 방식은 클래스 이름과 일치하는 Entity 속성 (name)을 사용하여 올바른 계산기 인스턴스 (Activator)를 동적으로 생성하는 것입니다. 이 시점에서 내가 잘못 생각하고 있는지 확실하지 않습니다. – Christian

답변

1
방금 ​​부분 클래스를 추가 할 수 있도록 EntityObjects가 자신의 생성 된 코드에 정의 된 생성자가없는

:

당신이 다르게 계산을 수행 가겠어요 어떻게
public partial class MyEntity 
{ 
    public MyEntity() 
    { 
     // Whatever logic to determine your strategy 
    } 
} 

는 의존 무엇 정확히하려고합니다. 어떻게 든 생성자에 여분의 매개 변수를 전달하려는 경우, 나는 그렇게 할 수 있다고 생각하지 않으므로이를 해결해야합니다.

또한 Entity Framework에서 inheritance을 보았습니까? 일부 열/속성의 값을 기반으로 abstract 및/또는 virtual 메서드 및 속성을 사용하는 부분 클래스를 사용하여 다양한 비즈니스 논리의 다른 구현을 가질 수있는 다른 하위 클래스를 사용할 수 있습니다.

물론 개체가 인스턴스화 된 후에 동작을 변경할 수는 있지만 원하는 것이 아닌 느낌이 들게됩니까? 고정 된 방법으로 공장에 액세스 할 수 있습니까? 정적 클래스, 메서드 또는 속성으로 사용 하시겠습니까?

MyFactory.Current = new MyFactory(parameters); 

public partial class MyEntity 
{ 
    public MyEntity() 
    { 
     _calcStrategy = MyFactory.Current.ProvideCalculator(this); 
    } 
} 
+0

기본 params 생성자 이상이 필요합니다. 필자는 건설 시간이나 공장에서 전략을 투입하여 기업이 적절한 전략을 요구할 수 있도록하고 싶습니다. 어쩌면 범위를 넓히고 내가하려고하는 것을 설명 할 것입니다. 전략 방향이 올바르지 않습니다. – Christian

+0

모든 엔티티가 약간 다른 전략 논리를 가지므로이 경우 상속이 작동하지 않는다고 추가하기 만하면됩니다. – Christian

2

계산을 수행 할 때 전략을 수립 할 수 있습니까?

myEntity.Calculate(myStrategy); 

어떻게 반전에 대한 전략과 기업 사이의 관계?

myStrategy.Calculate(myEntity); 

또는 속성 주입을 사용하는 전략은 무엇입니까?

+1

완전히 관계를 뒤집은 것은 내가 생각한 것입니다. 나는 그것에 대해 더 생각하면 그 방향을 기대기 시작했다. 내 경우 실제로 전체 프로세스에 관련된 하나 이상의 단계/전략이 있습니다. DDD 서비스 객체가 여기에있는 방법 일 수 있습니다. 각 전략의 생성 및 전체 작업 흐름을 관리 할 수 ​​있습니다. 이는 모든 항목에 대해 동일합니다. 나를 귀찮게하는 것은 엔티티 자체가 특정 전략에 묶여 있다는 것입니다. 재사용이 있을지 확실하지 않습니다.각 전략에는 필요한 특정 데이터 집합/매개 변수가 있습니다. 어떤 아이디어? :) – Christian

+0

paramaters에 의해 나는 상수를 정말로 의미한다. 모든 전략은 동일한 상수를 사용하지 않지만 거기에는 중복이 있습니다. – Christian

관련 문제