Nhibernate 一对一关系映射(主键映射)

参考:点击这里

妈的,搞了一天了,终于可以了,现在总结下,以防下次再出现这样痛苦的问题了,有两个表: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搞得我吐血了。

Nhibernate 一对一关系映射(主键映射),古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。