0

. 이미 내 도메인 클래스에 일반 ObservableCollection을 사용했으며 변경하지 않으려 고합니다.EF를 사용하여 ObservableCollection을 사용하도록 도메인 클래스를 구성하는 방법은 무엇입니까? 내가 엔티티 프레임 워크 코드 첫 번째 모델링 기술을 사용하기 시작하고 FluentAPI</strong><strong>DataAnnotation</strong> 및 <strong>를 사용하여 많은 (1-N) 관계를 구현하는 많은 예제를 보았다하지만 도메인 클래스를 모델링하는 동안 모든 예 <code>ICollection</code>을 사용하는

현재 FluentAPI를 사용하여 구성을 지정하는 동안, 나는 오류 다음 얻고있다 :

HasRequired(t => t.App) 
    .WithMany(t => t.EndPoints) // error here 
    .HasForeignKey(t => t.App); 

Cannot implicitly convert Type 'EndPoints' to 'ICollection'.

주 : 엔드 포인트 클래스는 ObservableCollection에를 사용하여 구현된다.

제 질문은 어떻게 작동시키는 것입니까? 이것은 그렇게하는 예입니다

public class ModelBase 
{ 
    public Guid Id { get; set; } 
    public string Name { get; set; } 
} 

public class RuleApp : ModelBase 
{   
    public EndPoints EndPoints { get; set; } 
} 

public class EndPoint : ModelBase 
{ 
    public RuleApp RuleApp { get; set; } 
} 

public class EndPoints : GenericObservableCollection<EndPoint> { } 

public class GenericObservableCollection<T> : ObservableCollection<T> 
{ 
    // other common stuff handling 
} 
+0

, 당신의 엔티티 정의 –

+0

내가 정의 –

+0

속성을 사용 insted 당신이 클래스와 엔드 포인트를 사용하는 이유를 추가 한 우리를보기 바랍니다 원하는 일을하기 위해 엔드 포인트의 모든 데이터를 featch해야 당신 EndPoins 클래스의 constractor에서 ? RuleApp EndpointsProperty를 다음과 같이 변경하십시오. public virtual ObservableCollection EndPoints –

답변

0

: 다음

내 개체 정의입니다

public class ModelBase 
{ 
    public Guid Id { get; set; } 
    public string Name { get; set; } 
} 

public class RuleApp : ModelBase 
{  
//This for create RelationShip 
    public virtual ICollection<EndPoint> EndPoints { get; set; } 

    [NotMapped] 
    Public EndPoints GenericEndPoints { get; set; } 

    public void TransferToGenric() 
    { 
      GenericEndPoints =new EndPoints(EndPoints) 
    } 

} 

public class EndPoint : ModelBase 
{ 
    public RuleApp RuleApp { get; set; } 
} 

public class EndPoints : GenericObservableCollection<EndPoint> { } 

public class GenericObservableCollection<T> : ObservableCollection<T> 
{ 
    // other common stuff handling 
} 

당신은 당신의 CALSS의 모든 특성 매핑 된 속성 EF로 GenericObservableCollection을 사용하기 때문에 내가 작성하는 경우 끝점을 사용하는 속성 및 그 후에 GenericObserveableCollection으로 변환합니다. 당신은 당신이

+0

이 방법에 대해 알고 있지만이 방법은 편리하지 않습니다. 내 도메인 클래스에 영향을 미치지 않을 방법을 찾고 있습니다. –

+0

왜 도메인을 변경하지 않으시겠습니까? –

+0

주로 내 모델/도메인 클래스가 엔터프라이즈 WPF 응용 프로그램에 바인딩되어 있기 때문에 EF 용으로 변경하면 좋은 생각은 아닙니다. 그리고 내 문제에 대한 해결책이 필요하다고 생각합니다. 그렇지 않으면 다른 O/R 매퍼로 가야 할 수도 있습니다. –