使用NHibernate的Mapping.ByCode
,我如何從Oracle序列中獲取組合鍵的初始值?下面如何使用Mapping.ByCode從Oracle序列中獲取NHibernate組合鍵的值?
ComposedId(map =>
{
map.Property(x => x.Column1);
map.Property(x => x.Column2);
});
適用於一個單一的鍵,但ComposedId
IComposedIdMapper
使用,這似乎不具有相當於IIdMapper
的Generator
:
Id<decimal>(x => x.Id, o =>
{
o.Column("ID");
o.Generator(Generators.Native, genMapping => genMapping.Params(new { sequence = "MY_SCHEMA.MY_ID_SEQ" }));
});
我同意這個設計有點奇怪。這是一個現有的回購,這個特定的實體之前沒有被使用過,我正在使用它。看起來有些情況下這些鍵是手動設置的,有些是需要自動生成的,所以我認爲你的'CreateSQLQuery'具有手動分配功能。謝謝! –
@EricEskildsen,我用方言重新調整了它的代碼。我忘記了這個屬性只能從實現接口中獲得。在答案中,我提供了一個「無投票」的解決方案。從'ISessionFactory',它可以通過將其轉換爲'ISessionFactoryImplementor'來代替。 –