首页 新闻 搜索 专区 学院

Nhibernate一对一情况下,插入如何自己控制顺序

1
悬赏园豆:100 [已解决问题] 解决于 2010-08-20 11:30

比如 a类的一个属性是b类 双方无论是one-to-one 还是many-to-one 然后 unique="true"的情况下,都是先insert b类
但这样的情况下 有些逻辑讲不通 比如一个人的是一张表 名字是一张表 设计模型是肯定是一个人的一个属性是name 然后db中,肯定是人表是主键表,名字表是外键表 例子可能不恰当 假设用人可能没有名字。这样的话 先插入b类,就会出现一个外键约束不符合的情况。不知道怎么解决?先谢谢了

补充

不想在业务层里做两次操作 想通过映射文件做一次操作即可

双鱼座的牛的主页 双鱼座的牛 | 初学一级 | 园豆:2
提问于:2010-08-19 10:16
< >
分享
最佳答案
0

a类的一个属性是b类

这两个类都是实体对象么,都有各自的生命周期么?关联有两种,其一是b类是个实体,他有自己的生命周期,有自己的状态。其二b类是个业务封装类,不是一个实体,他是个组件。组件是依附于a类的。

你说的:比如一个人的是一张表 名字是一张表 设计模型是肯定是一个人的一个属性是name 

这个Person类和Name类是不同的概念,name没有自己的生命周期,就是Person类的组件。所以是插入Person之后就插入了Name。

就像 http://www.cnblogs.com/lyj/archive/2008/10/23/1317877.html

对于关联关系关联引用对象的话,是先要有引用对象(Name),才能去关联他,你映射是把Name作为一个实体的,所以需要先保存Name,在保存Person的。

就像http://www.cnblogs.com/lyj/archive/2008/10/23/1317877.html Mapping篇的

所以是你映射错了,而不是NH生成语句错误。。

建议看看书籍推荐:领域驱动设计与模式实战这本书。

收获园豆:60
李永京 | 老鸟四级 |园豆:3114 | 2010-08-19 12:52