使用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'来代替。 –