首页 新闻 会员 周边

castle 修改主键的值

0
悬赏园豆:5 [已解决问题] 解决于 2014-09-14 11:55

castle中怎么修改主键的值 现在只是继承ActiveRecord的update方法,不能实现修改主键值。

 NHibernate.StaleStateException: Unexpected row count: 0; expected: 1

主键的值就有的,不是null,不过这个主键是另一个表的外键。

跪求指教

TNT0301的主页 TNT0301 | 初学一级 | 园豆:173
提问于:2014-09-13 21:15
< >
分享
最佳答案
0

谁告诉你主键值可以修改的,你把他叫过来,我保证不打死他...

收获园豆:5
爱编程的大叔 | 高人七级 |园豆:30839 | 2014-09-13 21:36

 为什么不可以改?

我只知道int 类型的自增主键不能改吧,我改的主键是string类型的。

我们老师说可以通过sql 但是没告诉我怎么弄,我查半天资料完全找不到头绪啊。

往赐教...

TNT0301 | 园豆:173 (初学一级) | 2014-09-14 08:34

@New Folder: 

为了表示慎重,我自己测试了一下,如果在数据库中,直接写SQL语句确实可以更新主键值。

But any way,

在ORM中,更新主键值确实是一个挑战性的任务。既然你说到老师,那我这样说吧,

当数据行已经保存在数据库中以后,修改主键值被认为是一个可以不需要进行或者可以避免进行的操作。

实际上,我从来不做这个事情。找不到任何理由来做这个事。

如果你是为了纯粹技术狂去研究这个,那请继续吧。

如果想探讨为什么需要或是为什么不需要修改/更新主键的值的话,你可以举一个反例,来说明修改/更新主键值的必要性。

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-09-14 09:41

@爱编程的大叔: 

明了,

拜谢。

TNT0301 | 园豆:173 (初学一级) | 2014-09-14 11:53

@爱编程的大叔: 

Depts是类型名。

Depts : ActiveRecordBase<Depts>

请问这里的<Depts>是什么意思?

我只知道ActiveRecord底层封装了NHibernate,然后这里就是继承了Create,Update,Find,FindAll之类的方法

TNT0301 | 园豆:173 (初学一级) | 2014-09-15 14:42

@New Folder: ActiveRecordBase<T>  你可以去学习一下有关泛型编程方面的知识。

这里的<Depts>就是告诉ActiveRecordBase操作的对象类型。

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-09-15 14:50

@爱编程的大叔: 

明了

再谢。

TNT0301 | 园豆:173 (初学一级) | 2014-09-17 07:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册