首页 新闻 搜索 专区 学院

NHibernate中用Conformist的方式 用的oracle 要怎样指定序列名

0
悬赏园豆:20 [已解决问题] 解决于 2011-11-19 18:29

//主键用序列
this.Id(p => p.Id, map =>
{


//map.Generator(Generators.Sequence, generatorMapping =>  generatorMapping.Params("PRODUCT_SQE"));

//上面的代码出错

//

Data.Test.Test.ConformistMappingRegistration:
System.Reflection.TargetParameterCountException : 参数计数不匹配。


 map.Generator(Generators.Sequence);

//这句不会出错,但不能指定序列史
});

陌文隐的主页 陌文隐 | 初学一级 | 园豆:92
提问于:2011-11-19 16:28
< >
分享
最佳答案
0
        public CategoryMap()
{
Cache(c =>
{
c.Usage(CacheUsage.ReadWrite);
});
this.Id(c => c.Id, map =>
{
map.Generator(Generators.Identity);
map.Column("CategoryId");
});
this.Property(c => c.Description);
this.Property(c => c.Name);
}

你是指 map.Column("CategoryId")这个名称吗?

收获园豆:20
zhangweiwen | 小虾三级 |园豆:904 | 2011-11-19 16:39
map.Column("CategoryId"); 这方法是指定数据库中的列名 并不是指定序列名
陌文隐 | 园豆:92 (初学一级) | 2011-11-19 16:43

看了一下,generatorParameters类型是Object,看看是不是要这样写.

map.Generator(Generators.Sequence, x => 
{
x.Params(new { name = "PRODUCT_SQE" });
});



zhangweiwen | 园豆:904 (小虾三级) | 2011-11-19 17:58

@zhangweiwen: 

 

OK了,就这种方法,不过

map.Generator(Generators.Sequence, x => 
{
x.Params(new { name = "PRODUCT_SQE" });
});

要改成
map.Generator(Generators.Sequence, x => 
{
x.Params(new { sequence = "SequenceName" });
});
生成的结果为

<id name="ID" column="orderid" type="Int32">
<generator class="sequence">
<param name="sequence">SequenceName</param>
</generator>
</id>

陌文隐 | 园豆:92 (初学一级) | 2011-11-19 18:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册