2010-05-14 26 views
0

任何使用父表的主鍵的1-M,但使用不同列的任何1-M不起作用。它正確地生成SQL,但將鍵的值放入SQL中,而不是我想要的列值。延遲加載不適用於一對多

映射的例子:

public TemplateMap() 
    { 
     Table("IMPORT"); 

     LazyLoad(); 

     Id(x => x.ImportId).Column("IMPORT_ID").GeneratedBy.Assigned(); 

     Map(x => x.ImportSetId).Column("IMPORTSET_ID"); 

     HasMany(x => x.GoodChildren) 
      .Access.CamelCaseField() 
      .KeyColumns.Add("IMPORT_ID") 
      .Cascade.Delete() 
      .Inverse(); 

     HasMany(x => x.BadChildren) 
      .Access.CamelCaseField() 
      .KeyColumns.Add("IMPORTSET_ID") 
      .Cascade.Delete() 
      .Inverse(); 
    } 

延遲加載工程GoodChildren,而不是BadChildren。

SQL語句對於兩個孩子都是正確的。但是錯誤的價值在於使用。如果IMPORT_ID的值爲10,IMPORTSET_ID的值爲12.值10將用於SQL中的IMPORTSET_ID而不是12。

任何人都有任何想法,我需要更改以使BadChildren工作正常嗎?

注:
GoodChildren鏈接IMPORT_ID在模板

BadChildren鏈接IMPORTSET_ID在模板

回答

-1

升級到3.0版本解決了這個問題。

+0

爲什麼-1評級? – Shire 2012-03-14 21:37:34

0

我不知道該怎麼做你想要做的方式,而是一種替代方法是使用在你的兒童桌上的一列,以確定記錄是什麼樣的孩子:

 HasMany(x => x.GoodChildren) 
      .Table("tblChildren") 
      .Where("CHILD_TYPE='Good'"); 

     HasMany(x => x.BadChildren) 
      .Table("tblChildren") 
      .Where("CHILD_TYPE='Bad'"); 
+0

GoodChildren表的工作良好,因爲其組合鍵包含父標識列(即主鍵)。 badColumn表不是workign,因爲它的組合鍵包含一個不是父標識列的列。另外,它們是兩個不同的表格,不是同一張表格。我改變了名字,試圖讓它更加明顯。如果重要的話,就是所謂的字段和其他存檔。 – Shire 2010-05-17 12:11:12