代码改变世界

NHibernate Begginner Ch3

2011-07-02 19:46  一一九九  阅读(184)  评论(0编辑  收藏  举报

NHibernate  Begginner   Ch3

     one of the greatest things that NHibernate brings to us is the ability to work directly with objects instead of having to deal with DataSets or DataReaders. Before we can use these objects, however, we of course need to define them.

     大多数情况下我们从数据库获取到数据后一般都是直接显示的,很少做一些额外的处理,大多数的情况下仅仅是设置某些字段的值而已,一些比较复杂的业务算法在数据库端采用SQL也可以实现,采用NH的一个理由就是进行了强类型的字段名称检查,另外一个理由是可以将数据库作为纯粹的数据存储端,仅仅使用其作为数据的存储获取的功能,不在数据库上执行复杂的业务逻辑,而将复杂的业务逻辑放到AppServer中进行处理。另外的好处就是增强了可测试性。

       But what about those pesky Nullable properties? How do we handle thoes? While we can’t put a null value for a value type (like an int), we can put one in a reference or generic type, instead of using a value type of int in C#, we will use a nullable int (“int?”) like this:

<PRE class="brush: csharp; auto-links: true; collapse: true; first-line: 1; gutter: true; html-script: true; light: true; ruler: true; smart-tabs: true; tab-size: 4; toolbar: true;">private int? test</PRE>

      字段的可空或者不可空的设计是比较复杂和重要的事情,因为字段的空和非空是可变化的,是否意味着要修改某个字段的字段类型? 另外字段的空和非空是否是应该作为一种约束来进行处理?

      todo: 了解nullable type 是什么玩意?是否存在效率和空间的影响?

Converting SQL Database types to .net Types

    DataTypes

呵呵,这里比较有意思的是数据库中的Char(’F’,’T’)和Boolean类型之间的转换,一般来说我们在数据库中表示true, false 的时候都是通过bit类型来表示的,而不是通过Char来表示的,难道老外的传统是用char

     todo: 了解一下如果是数据库中的Byte类型如何映射为.net的Boolean类型?

     todo: 了解一下如果将数据库中的Int类型映射为.net中的Enum类型?

      todo: 在上面的基础上了解一个字段的涉及是否应该采用nullable type ? 如果字段发生变化了怎么处理?比如说从非空变成了空,此时NH是如何将空值转换成为Object 的属性值?