2014-03-13 44 views
0

經過幾個小時的閱讀幾個類似的問題後,我仍然無法找到我遇到的問題。例外是其中如下所述查詢發生:NHibernate無效投射 - 使用查詢時屬性類型不匹配

Configuration config = new Configuration(); 
    config.AddAssembly(typeof(TestCase).Assembly); 
    ISessionFactory sessionFactory = config.BuildSessionFactory(); 
    var session = sessionFactory.OpenSession(); 
    ICriteria targetObjects = session.CreateCriteria(typeof(TestCase)); 
    IList<TestCase> itemList = targetObjects.List<TestCase>(); //Exception raised here 

例外情況是「無效角色(檢查爲屬性的類型不匹配的映射); TestProject.TestCase的設置器」

隨着一個的InnerException { 「指定的轉換無效。」}

這個類是如下:

public virtual Guid Id    { get; set; } 
    public virtual ushort Priority  { get; set; } 
    public virtual string Description { get; set; } 
    public virtual IList<string> Project { get; set; } 
    public virtual string Name   { get; set; } 
    public virtual DateTime? Created  { get; set; } 
    public virtual DateTime? Updated  { get; set; } 

和映射文件是

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
         assembly="TestProject" 
         namespace="TestProject"> 
     <class name="TestCase" 
      table="test_table" 
      lazy="true"> 
     <id name="Id" column="ID" type="Guid"> 
      <generator class="assigned" /> 
     </id> 
     <property name="Priority" column="Priority" 
        type="int" /> 
     <property name="Description" column="Description" 
        type="string" /> 
     <property name="Name" column="Name" 
        type="string" /> 
     <property name="Created" column="Created" 
        type="DateTime" /> 
     <property name="Updated" column="Updated" 
        type="DateTime" /> 
     <list table="ProjTable" name="Project"> 
      <key column="TestID" /> 
      <list-index column="ProjIndex" /> 
      <element column="ProjCol" /> 
     </list> 
    </class> 
    </nhibernate-mapping> 

我不是太熟悉SQL,但它幫助我在調試在過去的這個項目,所以我會發布系統產生什麼:

NHibernate: SELECT this_.ID as ID0_0_, this_.Priority as Priority0_0_, 
    this_.Description as Descript4_0_0_, this_.Test_Name as Test5_0_0_, 
    this_.Created as Created0_0_, this_.Updated as Updated0_0_ FROM test_table this_ 

我已經能值加載到該表使用此映射,但是我一直無法使用任何種類的查詢,而沒有發現此錯誤。我看着自己,我似乎無法找到原因。

我已經試過:
- 不同的查詢
- 改變日期時間?爲DateTime(看這是什麼地方可能的解決方案)
-Played與周圍的線在異常發生

任何幫助,這將是我一直停留在類似這種基本問題不勝感激結構在過去幾天中有幾個小時。

+0

TestProject.TestCase是實際的名稱,還是你爲這個問題重命名?我在問,因爲這感覺好像沒有在問題中出現問題。你有'namespace =「TestProject.TestCase」',以及'class name =「TestProject.TestCase」',並且還有一個錯誤,說明一個名爲TestProject.TestCase的屬性。因此,所有三個名稱空間,類和屬性都完全一樣。要麼是你的問題,要麼是你說明問題的方式有錯誤。 –

+0

這就是他們的名字;根據我在安裝過程中收集的其他信息,這似乎是正確的做法。然而,我會看看是否解決了問題。謝謝! – Crabgor

+0

這似乎沒有解決任何問題,但我確實清理了一下XML,它仍然可以將數據插入表中。我相應地更新了主帖中的XML。 我對別處發現的一些差異做了一些其他測試,因爲我再次查看代碼,但是他們也沒有完成任何事情。我會繼續努力的。再次感謝您的意見! – Crabgor

回答

1

找到了一個解決方案,我不知道爲什麼我沒有考慮過之前。

通過從.hbm.xml中刪除類型,它使查詢通過無阻礙。經過多次測試後,我得出結論認爲Priority列對於是int還是uint並不滿意。我認爲這與MySQL存儲整數的方式相比C#是如何存在的問題,很可能是因爲我將它們標記爲數據庫端未簽名。作爲一個修復,我只是從XML中刪除了這種類型。

相關問題