2010-08-10 5 views
0

나는 Address 클래스의 객체이고 속성이 거의없는 주소로 등록 정보 인 Customer라는 엔티티 클래스를 보유하고 있습니다. 다음과 같이 보입니다 :RIA 서비스 및 사용자 정의 유형의 유형

public partial class Customer 
{ 
    public virtual int ID { get; set; } 

    public virtual string Symbol { get; set; } 

    public virtual string Name { get; set; } 

    public virtual string FirstName { get; set; } 

    public virtual string LastName { get; set; } 

    public virtual string NIP { get; set; } 

    public virtual Address Address { get; set; } 
} 

public partial class Address 
{ 
    public virtual int ID { get; set; } 

    public virtual string Descriptive { get; set; } 

    public virtual string Street { get; set; } 

    public virtual string City { get; set; } 

    public virtual string PostCode { get; set; } 

    public virtual string Country { get; set; } 
} 

데이터베이스 또는 엔티티의 sanse에는 아무 관계도 없습니다. Address는 Customer 클래스에 포함 된 객체이며 NHibernate 프레임 워크에 의해 생성됩니다. 실제로 < 구성 요소 /> 매핑 요소는 사용되는 :

<class name="Customer" table="`CRM_CUSTOMER`"> 
    <id name="ID"> 
     <generator class="native" /> 
    </id> 
    <property name="Symbol" unique="true" /> 
    <property name="Name" /> 
    <property name="FirstName" /> 
    <property name="LastName" /> 
    <property name="NIP" /> 
    <component name="Address" class="Address"> 
     <property name="Descriptive" /> 
     <property name="Street" /> 
     <property name="City" /> 
     <property name="PostCode" /> 
     <property name="Country" /> 
    </component> 
</class> 

그러나, 클라이언트가 전혀 Address 클래스/속성을 참조하지 않는 코드를 생성합니다. 아무것도 도움이되지 않습니다. 기사가 많고 아무것도 읽지 않았습니다. 그래서 누군가가 도울 수 있다면, 정말 고맙겠습니다.

VS 2010 Proffesional을 사용하고 있습니다.

TIA

롤랜드

답변

0

시도하고 [포함] 속성을 가진 Customer 클래스 주소 속성을 장식합니다. 이렇게하면 RIA가 Address 등록 정보를 반환하게됩니다.

이렇게해도 작동하지 않으면 서버 쪽 도메인 서비스 메서드에 주소 속성이 제대로 채워져 있고 문제가 Silverlight 클라이언트에 데이터를 전달하는 경우 볼 수 있습니다.

그러면 Address를 RIA 도메인 엔터티로 취급하고 고객과 주소 간의 관계를 구축 할 수 있습니다. 따라서 포함 방식은 결과를 산출해야합니다.

희망이 도움이됩니다.

0

unfortunatelly,

은 [포함] 속성이 도움이되지 않습니다 [죄송 지연 ... 내가 다시 여기 있어요]. 첨부 된 [연관] 속성을 추가해야합니다. 그러나 이것은 내가 피하고 싶었던 것을 의미한다 - 단순하고 불필요하지 않고 ORM 매핑 (NHibernate)을 위해 의도 된 도메인 객체에 추가적인 필드와 구현을 시행한다.

이 솔루션은 매우 침습적이고 기관에 대하여 협회에 필요한 모든 물건 소개 - ID를. 이것은 또한 < 구성 요소 /> 안에 < parent /> 요소를 넣어야 할 때 매핑에 영향을 미쳤습니다.

[MetadataType(typeof(CustomerMetadata))] 
public partial class Customer 
{ 
    [DataContract] 
    internal class CustomerMetadata 
    { 
     [Key] 
     [DataMember] 
     public int ID { get; set; } 

     [DataMember] 
     public string Symbol { get; set; } 

     [DataMember] 
     public string Name { get; set; } 

     [DataMember] 
     public string FirstName { get; set; } 

     [DataMember] 
     public string LastName { get; set; } 

     [DataMember] 
     public string NIP { get; set; } 

     [Include] 
     [Association("Customer_Address", "ID", "CustomerID", IsForeignKey = true)] 
     [DataMember] 
     public Address Address { get; set; } 
    } 
} 

... 그리고

public partial class Customer 
{ 
    public virtual int ID { get; set; } 

    public virtual string Symbol { get; set; } 

    public virtual string Name { get; set; } 

    public virtual string FirstName { get; set; } 

    public virtual string LastName { get; set; } 

    public virtual string NIP { get; set; } 

    public virtual Address Address { get; set; } 
} 
을 다음과 같이

마지막으로, 도메인 클래스가되었다 ... 그것을 얻는 방법에 대한 더 좋은 생각이 없었다 - 그냥 부모로부터 ID를 얻으려면

<class name="Customer" table="`CRM_CUSTOMER`"> 
    <id name="ID"> 
     <generator class="native" /> 
    </id> 
    <property name="Symbol" unique="true" /> 
    <property name="Name" /> 
    <property name="FirstName" /> 
    <property name="LastName" /> 
    <property name="NIP" /> 
    <component name="Address" class="Address"> 
     <parent name="Customer" /> 
     <property name="Descriptive" /> 
     <property name="Street" /> 
     <property name="City" /> 
     <property name="PostCode" /> 
     <property name="Country" /> 
    </component> 
</class> 

< PA : 그것이 작동되도록하려면

는, 매핑은 다음과 같이 변경되었습니다 rent /> 요소는 여기에 새로 추가되었습니다. 나는 연관성을 외래 키 연관으로 만들기위한 선택적 속성이 올바른지 아닌지 확실하지 않다 ...

나는 또한 놀랍게도 생성 된 코드에 RIA 서비스에 대한 이야기의 시작 부분에 나타날 것으로 예상되는 다른 모든 것들이 포함되어 있기 때문에 주소 자체에 대한 도메인 서비스를 신경 써주지 않았습니다. ..

솔루션은 정말 침략적이되어서 나에게 완벽하지는 않지만 지금은 적어도 만족 스럽습니다. 당장은 작동합니다. 나는 NH에서 다 - 대 - 다 협회와 함께할만한 와일드를 궁금해합니까?

희망이 있으면 도움이됩니다. 건배.

롤랜드

관련 문제