原文:
http://zsy.cnblogs.com/archive/2006/03/14/312488.html
我们知道,数据库中DateTime子段允许为空(null)。当我们在ASP.NET中映射为DateTime是就不允为空了。该怎么处理?基本有两种办法:
(1)修改.hbm.xml文件中的类型,该"DateTime"为"String",该实体文件中的属性类型"DateTime"为"String"。
处理的时候,该属性值要么为空,要么是具有正确日期格式的字符串。
该方法只适合DateTime类型,而对int,bool类型就不适应了。下面就看第二种方法。
(2)Nullables处理
(1)添加引用:Nullables.dll与Nullables.NHibernate.dll
(2)修改配置文件.hbm.xml对应的类型,如:
<property name="InDate" column="inDate" type="DateTime"/>修改为:
<property name="InDate" column="inDate" type="Nullables.NHibernate.NullableDateTimeType,Nullables.NHibernate"/>
(3)修改实体类文件,如:
private DateTime _inDate;
/// <summary>
/// 添加日期
/// </summary>
public DateTime InDate
{
get { return _inDate; }
set { _inDate = value;
} 修改为:
private Nullables.NullableDateTime _InDate;
/// <summary>
/// 添加日期
/// </summary>
[NHibernate.Mapping.Attributes.Property]
public Nullables.NullableDateTime InDate
{
get { return _InDate; }
set { _InDate = value; }
}
(4)给属性InDate赋值:
Item clsItem = new Item();
clsItem.InDate = new NullableDateTime(System.DateTime.Now);
如果要输入空值,如:clsItem.InDate = nulll;
(5)获取属性InDate的值:
ItemCRUD clsCRUD = new ItemCRUD(); //对实体类的操作
Item clsItem = clsCRUD.ItemDetails(id); //获取实体类
this.txtInDate.Text = clsItem.InDate.ToString();
通过第二种方法可以对数据库中对应的整形、bool类型等赋空值。
分享到:
相关推荐
这份文档教程详细介绍了如何配置NHibernate,如何创建映射文件,以及如何使用Session和Transaction来处理数据库交互。同时,由于它还附带了原始的英文文档,读者可以对比学习,确保理解和翻译的准确性。 以下是...
不仅仅管理.NET类到数据库表的映射(包括.NET 数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和ADO.NET处理数据的时间。 NHibernate的目标主要是用于与数据持久...
10. **多态性支持**:在继承体系中,NHibernate可以正确处理多态性,使得不同类型的对象可以共享相同的数据库表。 11. **事务管理**:NHibernate支持编程式和声明式事务管理,确保数据一致性。 12. **分页查询**:...
3. **实体(Entities)**:在NHibernate中,实体代表业务领域中的对象,它们被映射到数据库中的表。实体应遵循特定的规则,如拥有标识符(ID)属性。 4. **持久化(Persistence)**:NHibernate提供了CRUD(创建、...
在轻量级模式下,应用程序直接管理ADO.NET连接和事务,而在全面解决方案中,NHibernate会处理这些底层细节,提供更高级别的抽象。这两种模式体现了NHibernate的灵活性,以适应不同开发场景的需求。 总之,...
5. **事务处理**:学习如何在NHibernate中处理数据库事务,确保数据的一致性和完整性。 6. **查询**:探索HQL(Hibernate Query Language)和 Criteria API,它们是NHibernate提供的面向对象的查询方式,可以替代...
Nhibernate提供了Session、Transaction、Querying等核心组件,帮助开发者高效地处理数据。 ### 二、安装与配置 1. **安装**: 通过NuGet包管理器安装Nhibernate和相关的依赖库。 2. **配置**: 配置文件(通常是`...
例如,`Customer.cs`可能是表示客户信息的实体类,它包含了属性和方法,这些属性对应数据库表的字段,而方法则处理业务逻辑。 `hibernate.cfg.xml`是NHibernate的配置文件,它定义了数据库连接信息、映射文件的位置...
- **应用场景**:在NHibernate中,`SessionFactory`通常在整个应用程序生命周期内创建一次,然后在需要时通过它创建`Session`对象。 2. **Session (NHibernate.ISession)** - **定义**:`Session`是单线程、生命...
NHibernate 参考文档手册 chm,NHIBERNATE-符合.Net习惯的关系数据库持久化,手册目录摘要: 前言 1. 第一个NHibernate应用程序 1.1. 开始NHibernate之旅 1.2. 第一个持久化类 1.3. 映射cat 1.4. ...
2. **自动数据持久化**:当对象的状态改变时,NHibernate 可以自动将这些变化持久化到数据库中,反之,当需要查询数据库时,它也能将数据转换为对象状态。 3. **查询语言**:NHibernate 支持 HQL(NHibernate Query...
2. **读取配置**:使用`NHibernate.Cfg.Configuration`类的`Configure`方法来加载配置文件中的`hibernate-configuration`节点。 3. **创建SessionFactory**:使用配置对象创建`SessionFactory`实例。 #### 二、...
在 NHibernate 的轻量级模式中,应用程序直接管理 ADO.NET 连接和事务,而在全面解决方案中,NHibernate 将处理所有底层细节,提供更高级别的抽象。这提供了灵活性,可以根据项目的具体需求选择适合的集成方式。 总...
而在.NET开发中,尤其是使用ORM(对象关系映射)框架如NHibernate时,执行数据库存储过程是常见的需求。本文将深入探讨如何在NHibernate中调用和执行存储过程。 首先,理解NHibernate的基本工作原理是必要的。...
8. **事务处理**:NHibernate支持事务管理,可以使用Session的BeginTransaction、Commit和Rollback方法来控制事务的边界。 9. **缓存机制**:NHibernate内置了第一级缓存(Session级别)和第二级缓存...
nhibernate c#nhibernate c#nhibernate c#nhibernate c#nhibernate c#nhibernate c#nhibernate c#
这个"学习NHibernate的范例"是一个实用的学习资源,旨在帮助开发者理解如何在实际项目中应用NHibernate。在这个例子中,我们将探讨一个基于NHibernate构建的三层用户管理系统,它涵盖了基本的CRUD(创建、读取、更新...
- 需要在项目中添加NHibernate的引用(NHibernate.dll)。 - 在桌面应用程序中配置`App.config`文件,在Web应用程序中配置`web.config`文件。 - 配置文件中需要指定数据库连接信息、使用的数据库方言等参数。 - ...
.NET中的NHibernate是一个强大的对象关系映射(ORM)框架,它为.NET开发者提供了一种将数据库操作抽象化、简化的方法,使得开发人员可以使用面向对象的编程方式来处理数据库交互,而无需直接编写SQL语句。...