Welcome

首页 / 软件开发 / .NET编程技术 / Nhibernate一对一关系映射概述

Nhibernate一对一关系映射概述2015-12-23 承影剑 现有两个表:user(用户)和Blog(设置表),它们之间的关系正如我所说的是一对一的关系。现在我们来映射这两个文件:

<?xml version="1.0" encoding="utf-8" ?><hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"namespace="MyMvc4Project.Models" assembly="MyMvc4Project.Models"><class name="MyMvc4Project.Models.User" table="Users" lazy="false"><id name="Id"><column name="Id" sql-type="varchar(40)" not-null="true"/><generator class="uuid.hex" /></id><one-to-one name="Blog" class="Blog" cascade="all"></one-to-one></class></hibernate-mapping><?xml version="1.0" encoding="utf-8" ?><hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"namespace="MyMvc4Project.Models" assembly="MyMvc4Project.Models"><class name="MyMvc4Project.Models.Blog" table="Blog" lazy="false"><id name="Id"><column name="Id" sql-type="varchar(40)" not-null="true"/><generator class="foreign"><param name="property">User</param></generator></id><one-to-one name="User" class="User" constrained="true"></one-to-one></class></hibernate-mapping>
现在测试如何保存数据:

var userDal = new UserDal();var blogDal = new BlogDal();var user = new User{ Name = name, Password = password, PostTitle = posttitle, CreateTime = DateTime.Now, Avatar = fileUrl };var blog = new Blog { User = user };user.Blog = blog;blogDal.Save(blog);userDal.Save(user);
总结:

这样就成功了保存了数据,搞了“老子”一天的时间了,唉,其实hibernate一对一关联还有外键的关联等,我就使用了这个主键关联。

1:如果hibernate设置了

<id name="Id">
           <column name="Id" sql-type="varchar(40)" not-null="true"/>
           <generator class="uuid.hex" />
</id>

这样的代码,你就可以不用在添加数据时用这样的代码了:Guid.NewGuid。(以前居然不知道,真是失败)。

2:

<generator class="foreign">

<param name="property">User</param>

</generator>

这个代码表示的意思是,Blog的主键参考User表里的主键值。

3:也就是我上面保存数据的时候,我不确定是不是这样的操作,真的一点自信都没有,如果博友有的是hibernate专家,希望进来帮我看看,是不是这样保存数据(重要),还有一对一是不是这样配置的,唉,hibernate搞得我吐血了。