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搞得我吐血了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述