2013-11-27 2 views
0

내가 현재이지도유창함 NHibernate에 PersistentSpecification 테스트

public class CountryMap : ClassMap<Country> 
{ 
    public CountryMap() 
    { 
     Table("tblCountry"); 
     Id(x => x.Id, "intCountryId"); 
     Map(x => x.Name, "strCountryName"); 
     HasMany(x => x.FlagImages) 
      .Table("tblImage") 
      .KeyColumn("intRelId") 
      .Where("intObjId=29") 
      .Not.Cascade.All(); 
    } 
} 

public class ImageMap : ClassMap<Image> 
{ 
    public ImageMap() 
    { 
     Table("tblImage"); 
     Id(x => x.Id, "intImgId"); 
     Map(x => x.ObjId, "intObjId"); 
     Map(x => x.RelId, "intRelId"); 
     Map(x => x.ImageName, "strImage"); 
    } 
} 

다음과 같은 지속적인 사양 테스트가 실패합니다. 내가 2 일 동안을 확인했고 그 이유를 찾을 수있다 Assert.AreEqual failed. Expected:<(null)>. Actual:<NHibernate.Exceptions.GenericADOException: could not insert: [HansaCrew.Models.Images.Image][SQL: INSERT INTO tblImage (intObjId, intRelId, strImage) VALUES (?, ?, ?); select last_insert_rowid()] ---> System.Data.SQLite.SQLiteException: constraint failed foreign key constraint failed

실패 메시지입니다. 어떤 도움이 필요합니까?

답변

0

오케이, 알겠습니다.

코드의이 작품의 문제는 여기에있다

 HasMany(x => x.FlagImages) 
     .Table("tblImage") 
     .KeyColumn("intRelId") 
     .Where("intObjId=29") 
     .Not.Cascade.All(); 

NHibernate에 자동으로 테이블 tblCountry에서 intCountryId의 컬럼에없는 intRelId의 많이 가지고 tblImage와 외래 키 제약 조건을 만듭니다. 그렇기 때문에 외래 키 제약 조건이 실패했다는 테스트가 실패합니다.

이 문제를 해결하는 방법은 데이터베이스에 view을 만든 다음 Image 모델로 view를 매핑하는 것이다