문제

나는 날카로운 아키텍처 1.0과 함께 유창한 nhibernate 1.0을 사용하고 있습니다.

현재 우편 번호 클래스에 대한 참조를 매핑하려고합니다. 현재 매핑하는 클래스에는 ZipCode 열이 있지만 ZipCode 클래스는 기본 우편 번호에 필요한 것보다 훨씬 더 광범위하므로 이에 대한 추론입니다. (기본적으로 ZipCode 클래스에는 Lat. 및 Long. UTC 시간대 등이 포함되어 있습니다.

이것은 내지도입니다

            References<ZipCode>(x => x.ZipCodeRadius, "ZipCode")
            .Column("ZipCode")
            .Cascade.None()
            //.ForeignKey("FK_ZipCode")
            .ReadOnly();

그리고 테스트를 실행할 때이 오류가 발생합니다.

초기화 방법 CountryRepositoryTests.setup 예외. System.data.sqlclient.sqlexception : System.Data.sqlclient.sqlexception : 열 'ZipCode.zipCodeID'는 외래 키 'FK8C1490CB2993CD44'의 참조 열 '주소 .zipcode'와 동일한 데이터 유형이 아닙니다. 제약 조건을 생성 할 수 없습니다. 이전 오류를 참조하십시오 ..

나는 외국인과 제한된 람다를 추가하려고 시도했지만 아무것도 추가하지 않는 것처럼 보였다.

지퍼 코드 테이블에는 ID가 있지만 그에 매핑하고 싶지는 않습니다. 오히려 Zipcode 테이블의 우편 코드 열에 매핑하고 주소 테이블의 우편 코드 열에 다시 맵핑하고 싶습니다.

누군가 내가 이것을 해결할 수있는 방법이 있다면, 나는 그것을 정말로 감사하겠습니다.

위에서했듯이 우편 코드 테이블을 참조하고 우편 번호 테이블이 준비되어 있기 때문에 주소에 속성을 떨어 뜨릴 수는 없습니다.

이것은 zipcoderadius 클래스입니다.

[NotNullNotEmpty, Length(Max = 5)]
public virtual string ZipCodeName { get; set; }
[NotNullNotEmpty, Length(Max = 1)]
public virtual string ZipType { get; set; }
[NotNullNotEmpty, Length(Max = 10)]
public virtual string TimeZone{ get; set; }

public virtual int UTC  { get; set; }

public virtual double Latitude { get; set; }
public virtual double Longitude { get; set; }

public virtual County County { get; set; }

이것은 주소 클래스입니다

protected Address() { }

public Address(User UpdateUser)
    : base(UpdateUser)
{
    this.UpdateUserId = UpdateUser.Id.ToString();  
}

//[DomainSignature, NotNullNotEmpty]
//public virtual string Title { get; set; }

[NotNullNotEmpty, Length(Max = 50)]
public virtual string AddressLine1 { get; set; }

[Length(Max = 50)]
public virtual string AddressLine2 { get; set; }

[NotNullNotEmpty, Length(Max = 20)]
public virtual string City { get; set; }

public virtual StateOrProvince State { get; set; }

[NotNullNotEmpty, Length(Max = 10)]
public virtual string ZipCode { get; set;}

[Length(Max = 10)]
public virtual string ZipPlus { get; set; }

public virtual bool IsVerified { get; set; }

public virtual Country Country { get; set; }

public virtual ZipCode ZipCodeRadius { get; set; }

우편 코드 테이블 매핑입니다

Table("ZipCode");

Id(x => x.Id, "ZipCodeID");

Map(x => x.ZipCodeName, "ZipCode").AsVarChar(5);
Map(x => x.ZipType, "ZipType").AsVarChar(1);
Map(x => x.TimeZone, "TimeZone").AsVarChar(10);
Map(x => x.UTC, "UTC");
Map(x => x.Latitude, "Latitude");
Map(x => x.Longitude, "Longitude");

ReadOnly();
Cache.ReadOnly();
도움이 되었습니까?

해결책

분명히 Hasone은 이것을하는 올바른 방법입니다 .... 내가 그것을 시도했다고 생각했지만, 나는 PropertyRef를 놓치고있었습니다 ...

            HasOne<ZipCode>(x => x.ZipCodeRadius)
            .PropertyRef(x => x.ZipCodeName)
            .ForeignKey("ZipCode");
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top