0
我在sqlserverce上使用連貫NHibernate。 使用NHibernate QueryOver我嘗試檢索行 - NHibernate的自動生成氨基酸連接查詢 ,我得到以下異常:在uniqueidentifier上使用連接時出錯 - 將uniqueidentifier轉換爲數字
[SQL: SELECT tag FROM CheckpointToProtectionGroup cp2pg
JOIN CheckpointStorageObject cp ON cp.id = cp2pg.checkpoint_id
JOIN ProtectionGroupCheckpointStorageObject pg ON pg.id = cp2pg.vpg_id
WHERE cp.CheckpointIdentifierIdentifier = 1111 AND
pg.ProtectionGroupIdentifierGroupGuid =
11111111-1111-1111-1111-111111111111]
---> System.Data.SqlServerCe.SqlCeException:
The conversion is not supported.
[ Type to convert from (if known) = uniqueidentifier,
Type to convert to (if known) = numeric ]
從我所看到的,它似乎試圖將值轉換 - 11111111-1111 -1111-1111-111111111111到數字,但這個值是一個GUID字段:
CheckpointToProtectionGroup checkpointToProtectionGroup = Session
.QueryOver<CheckpointToProtectionGroup>()
.JoinQueryOver(row => row.ProtectionGroup)
.Where(row => row.ProtectionGroupIdentifier.GroupGuid ==
protectionGroupIdentifier.GroupGuid)
.SingleOrDefault();
ProtectionGroupIdentifier.GroupGuid是Guid類型
GroupGuid是Guid Property。但是當我使用JoinQueryOver時,NHibernate不會計算它。當在GroupGuid實體(ProtectionGroupCheckpointStorageObject)上激活QueryOver時,Nhibernate提供正確的SQL和Guid類型的GroupGuid - [Type:Guid(0)] – Haimon 2012-07-08 19:16:05
看起來像NHibernate中的一個錯誤:當在兩個表之間使用JoinQueryOver時,NHibernate無法轉換simple Guid價值uniqueidentifier。需要你的建議。謝謝 – Haimon 2012-07-09 09:08:41
ProtectionGroupIdentifier是另一個實體還是自定義類型或組件?也許問題出在那。 – 2012-07-09 13:32:23