У меня возникают некоторые проблемы с первичным ключом.Fluent NHibernate Duplicate Columns
У меня есть элемент, который содержит много отчетов. Я сопоставил их, как показано ниже. Я могу сделать Session.QueryOver(Of Item).List
, и никаких дополнительных столбцов не генерируется. Я также могу сделать Session.QueryOver(Of Report).List
, и никаких дополнительных столбцов не генерируется.
Однако, как только я попытаюсь пересечь отношения из пункта в отчеты, я получаю запрос SQL, показанный ниже. Может ли кто-нибудь сказать мне, почему? Заранее спасибо!
Пункт Mapping:
Public Class ItemMapping
Inherits ClassMap(Of Item)
Public Sub New()
Table("Items")
Id(Function(x) x.ItemID)
HasMany(Function(x) x.Reports).KeyColumn("ItemID").Inverse().Cascade.All()
End Sub
End Class
Mapping Report:
Public Class ReportMapping
Inherits ClassMap(Of Report)
Public Sub New()
Table("Reports")
Id(Function(x) x.ReportID)
References(Function(x) x.Item).Column("ItemID")
Map(Function(x) x.ReportName)
End Sub
End Class
SQL Результат:
SELECT repor0_.ItemID as ItemID1_,
repor0_.ReportID as Rep1_1_,
repor0_.ReportID as Rep1_4_0_,
repor0_.ReportName as Rep2_4_0_,
repor0_.ItemID as ItemID4_0_ FROM dbo.Reports repor0_ WHERE [email protected];@p0 = 1266 [Type: Int32 (0)]
Большое спасибо за информацию. Почему это происходит иногда? У меня есть другие отношения, которые не генерируют дополнительные столбцы. Это вызовет проблемы с запросами на вставку/обновление? Я видел некоторые сообщения здесь, где сопоставление вызывало ошибку Insert/Update, потому что оно создавало дополнительные столбцы. – Origin
@Origin. В ниве в группе nhusers перечислены некоторые случаи, когда это происходит. Я использую NHibernate во многих проектах, и у меня не было таких проблем (создание дополнительных колонок для вставки или обновления). Я считаю NHibernate очень стабильным продуктом. –