目录
- POCO 简单示例
-
- 为持久化字段声明访问器(getters 和 setters)
- 实现一个默认的构造方法(constructor)
- 提供一个标识属性(identifier property)(可选)
- 建议使用不是sealed的类 (可选)
- 实现继承(Inheritance)
- 实现
Equals()
和GetHashCode()
- 持久化生命周期(Lifecycle)中的回调(Callbacks)
- 合法性检查(Validatable)回调
- 用属性替代 XML
持久化类是应用程序用来解决商业问题的类(比如,在电子交易程序中的Customer和Order)。持久化类,就如同它的名字暗示的,是短暂存在的,它的实例会被持久性保存于数据库中。
如果这些类符合简单的规则,NHibernate能够工作得最好,这些规则就是Plain Old CLR Object (POJO,简单传统CLR对象)编程模型。
用一个类描述一只猫。
public class Cat { private long _id; // identifier private string _name; private DateTime _birthdate; private Cat _mate; private Set _kittens; private Color _color; private char _sex; private float _weight; public long Id { get { return _id; } set { _id = value; } } public string Name { get { return _name; } set { _name = value; } } public DateTime Birthdate { get { return _birthdate; } set { _birthdate = value; } } public Cat Mate { get { return _mate; } set { _mate = value; } } public Set Kittens { get { return _kittens; } set { _kittens = value; } } public Color Color { get { return _color; } set { _color = value; } } public char Sex { get { return _sex; } set { _sex = value; } } public float Weight { get { return _weight; } set { _weight = value; } } }
有四条主要的规则:
Cat
为它的所有可持久化字段声明了getters 和 setters访问器。用访问器来替代直接访问字段是个好习惯。然而也可以通过字段(field)来使用NNHibernate。
属性不一定需要声明为public的。NHibernate可以对default,procted
, internal
, or private
的属性一视同仁地执行持久化。
Cat
有一个显式的无参数默认构造方法。所有的持久化类都必须具有一个默认的构造方法(可以不是public的),这样的话NHibernate就可以使用Constructor.Invoke()
来实例化它们。
分类:
NHibernate
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构