`

NHibernate + MVC

    博客分类:
  • .net
 
阅读更多

载:http://www.cnblogs.com/wellsoho/archive/2009/09/11/1564880.html


在自己学习NHibernate+MVC时,吃了不少苦,开发中也总结了些问题。发表出来,以便新学者能有所借鉴少走些弯路。

Nhibernate 要求model实体类对于lazy="true" ,字段属性前需要加 virtual

sqlserver2005和oracle10g的hibernate.cfg.xml如何配置?
A:sqlserver2005配置如下
<!-- NHibernate sqlserver2005配置-->
<hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
  <session-factory name="db1">
    <!-- properties -->
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
    <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
    <property name="connection.connection_string">
      Server=.;initial catalog=NhibernateTest;User Id=sa;Password=sa
    </property>
    <property name="use_outer_join">true</property>
    <property name="use_proxy_validator">true</property>
    <!--<property name="show_sql">false</property>-->
    <!--<property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>-->
    <!-- mapping files -->
    <mapping assembly="Kang.Model" />
  </session-factory>
</hibernate-configuration>

Oracle10g配置如下:
<!-- NHibernate Oracle10g配置--> 
<hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
  <session-factory name="db1">
    <!-- properties -->
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="connection.driver_class">NHibernate.Driver.OracleClientDriver&lt</property>
    <property name="dialect">NHibernate.Dialect.Oracle9Dialect&lt</property>
    <property name="connection.connection_string">
      data source=KANGSHI;User ID=huobj;Password=huobj
    </property>
    <property name="use_outer_join">true</property>
    <property name="use_proxy_validator">true</property>
    <!--<property name="show_sql">false</property>-->
    <!--<property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>-->
    <!-- mapping files -->
    <mapping assembly="Kang.Model" />
  </session-factory>
</hibernate-configuration>


Q:无法将类型为“NHibernate.Dialect.MsSqlCeDialect”的对象强制转换为类型“NHibernate.Driver.IDriver”。 
A:当切换数据库时,相应的connection.driver_class属性是需要调整 
  oracle10g是NHibernate.Driver.OracleClientDriver
  MsSql2005是NHibernate.Driver.SqlClientDriver

Q:could not execute query
A:总的原则是,Nhibernate查询还是遵守sql原规则的。
1 字段名称不对,
2 字段格式不对,注意日期、数字和字符
3&lt;property type="string" length="50" name="RoleName" column="[RoleName]" /&gt;
oracle必须把RoleName的[]去掉。而sqlsever去不用去[]都行。
 

Q:The type System.Int32 can not be assigned to a property of type System.String setter of Kang.Model.Entities.USR_UserInfo.LoginID
A: 主键LoginID原定义的是int ,应该改成string

Q:Invalid Cast (check your mapping for property type mismatches); setter of Kang.Model.Entities.USR_UserInfo
A:length="80" 必须小于数据库表中字段的长度。另外,就是实体类中属性类的类型要和nhibernate-mapping 中的type同。

Q:数据库中的Date、DateTime和TimeStamp类型区别?
A:
DATETIME, DATE和TIMESTAMP类型是相关的。本文描述他们的特征,他们是如何类似的而又不同的。
DATETIME类型用在你需要同时包含日期和时间信息的值时。MySQL检索并且以'YYYY-MM-DD HH:MM:SS'格式显示DATETIME值,支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。(“支持”意味着尽管更早的值可能工作,但不能保证他们可以。) 
DATE类型用在你仅需要日期值时,没有时间部分。MySQL检索并且以'YYYY-MM-DD'格式显示DATE值,支持的范围是'1000-01-01'到'9999-12-31'。
TIMESTAMP列类型提供一种类型,你可以使用它自动地用当前的日期和时间标记INSERT或UPDATE的操作。如果你有多个TIMESTAMP列,只有第一个自动更新。

SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。
滴答数必须介于 DateTime.MinValue.Ticks 和 DateTime.MaxValue.Ticks 之间。
参数名: ticks 
A:实体类中这样定义就ok了  private DateTime _CreateDate = new DateTime(2009 - 9 - 9);

 

 
   Q:有的哥们这么写,但是问题是麻烦。
             var whitelist = new[] { "UserId", "UserName", "UserParssord", "UserMail" };
                UpdateModel(user, whitelist);
                uService.UpdateUserInfo(user); 
                return RedirectToAction("Index");
A:     可以这样写
               model = bll.GetModel(id);
                UpdateModel(model);
                bll.UpdateData(model);
                return RedirectToAction("Index")

父子表关联映射 ============================================== 
Q: 用户代码未处理 NHibernate.PropertyAccessException
  Message="Invalid Cast (check your mapping for property type mismatches); setter of Kang.Model.Entities.USR_UserInfo"
  Source="Kang.NHibernateHelper"
  A:<!--多对一关系:Users属于一个Role-->
  <many-to-one name="RoleID" column="RoleID" not-null="true" class="Kang.Model.Entities.RoleInfo" foreign-key="FK_RoleUsers" />

   <!--一对多关系:Role有一个或多个Users-->
    <set name="Users" table="`USR_UserInfo`" generic="true" inverse="true">
      <key column="RoleInfo" foreign-key="FK_RoleUsers"/>
      <one-to-many class="Kang.Model.Entities.USR_UserInfo"/>
    </set>
 
 Q:Duplicate property mapping of RoleID found in Kang.Model.Entities.USR_UserInfo
 A:有重复的属性定义。属性对象化,页面调用显示时可以再调用属性的属性,如:model.RoleID.RoleName

Q:Could not initialize proxy - the owning Session is disconnected
 A:对于父子关联表,把lazy="false"

 

 

 

 

分享到:
评论

相关推荐

    spring.net+nhibernate+mvc4

    标题 "spring.net+nhibernate+mvc4" 暗示了这个项目是关于使用 .NET 框架中的 Spring.NET、NHibernate 和 MVC4(ASP.NET MVC 4)技术来构建一个应用程序的实例。Spring.NET 是 .NET 平台上的轻量级依赖注入框架,它...

    spring.net+nhibernate+mvc+easyui源码

    《Spring.NET + NHibernate + MVC + EasyUI:企业级应用框架深度解析》 在现代软件开发中,构建高效、可扩展且易于维护的企业级应用程序是一项挑战。本篇将深入探讨一个基于Spring.NET、NHibernate、MVC(Model-...

    asp.net 二手车源码 三层+Nhibernate+MVC框架

    使用技术:三层+Nhibernate+MVC 功能如下:本产品包括网站信息显示、会员个人信息管理、网站后台管理三个主要范围。 网站信息显示包括:新会员注册、会员登录、二手车信息展示、二手车信息搜索、二手车新闻信息、...

    asp.net 二手车源码 三层+Nhibernate+MVC框架数据库

    【标题】中的“asp.net 二手车源码 三层+Nhibernate+MVC框架数据库”指的是一款基于ASP.NET技术开发的二手车交易平台的源代码,它采用了三层架构设计,结合了Nhibernate持久化框架以及MVC(Model-View-Controller)...

    Spring.net+Nhibernate+MVC2架构

    **Spring.NET+NHibernate+MVC2 架构详解** 在软件开发领域,Spring.NET、NHibernate 和 MVC2 是三个至关重要的技术组件,它们共同构建了一个高效、可扩展且易于维护的企业级应用程序架构。Spring.NET 是 .NET 平台...

    NHibernate+MVC+JQuery去实现增删改查

    在IT行业中,构建Web应用程序是常见的任务,而“NHibernate+MVC+JQuery去实现增删改查”是一个典型的组合,用于构建高效且交互性强的数据库驱动的应用。这一技术栈涉及了C#编程语言、ASP.NET框架、SQL数据库管理、...

    MySQL+NhiBernate+MVC4的增删改查

    在这个场景中,我们关注的是一个结合了MySQL数据库、Nhibernate持久化框架以及MVC4(Model-View-Controller)架构的应用开发实例。以下是关于这些技术及其组合使用的详细知识点: **MySQL**: MySQL是一款开源、...

    使用NHibernate + MVC + Bootstrap 搭建一款敏捷试开发后台,适合MVC初学者

    使用NHibernate + MVC + Bootstrap 搭建一款敏捷试开发后台,适合MVC初学者

    NHibernate+MVC+JQuery-增删改查

    写了半天这个小DEMO 初次用NHibernate+MVC 写个例子给大家共享下 有些Bug 但是功能实现了 可以重点看代码!对初学者帮助应该很大 自我感觉 呵呵 我的邮箱:13522335680@163.com 可以跟我交流!

    Nhibernate+MVC4项目实战

    在本项目实战中,我们将深入探讨如何利用ASP.NET MVC4框架和NHibernate持久化库来构建一个高效且功能丰富的房屋租赁系统。这个系统名为"MyHouseRent",它展示了如何将这两种强大的技术结合在一起,实现数据的高效...

    nhibernate+spring.net+mvc3.0项目

    标题 "nhibernate+spring.net+mvc3.0项目" 暗示这是一个使用NHibernate、Spring.NET和ASP.NET MVC 3.0框架构建的实际项目。这些技术都是开发高效、可扩展的企业级应用程序的常用工具。让我们逐一深入探讨它们。 **...

    NHibernate +asp.net mvc 3.0示例

    在"NHibernate +asp.net mvc 3.0示例"中,我们将探讨如何在ASP.NET MVC 3.0项目中集成NHibernate,以便利用其优点来处理数据存储和检索。 首先,我们需要理解NHibernate的基本概念。NHibernate通过映射.NET类到...

    asp.net 二手车源码 三层+Nhibernate+MVC框架(含数据库)

    本开源项目基于ASP.NET技术栈,采用了三层架构设计,结合Nhibernate持久化框架以及MVC模式,旨在提供一个完整的二手车交易平台的示例代码。通过学习此源码,你可以深入了解如何在实际开发中应用这些技术,提升你的...

    Spring.NET+NHibernate+MVC4框架所用到的所有DLL

    Spring.NET、NHibernate和MVC4是.NET平台上构建企业级应用程序的三个重要组件。这篇详细的说明将深入探讨这些技术以及它们在DLL文件中的作用。 首先,让我们从Spring.NET开始。Spring.NET是一个开源的企业级应用...

    MVC+NHibernate+Spring.net整合

    **MVC+NHibernate+Spring.NET 整合详解** 在软件开发中,MVC(Model-View-Controller)模式、NHibernate 和 Spring.NET 都是关键的组件,它们各自负责不同的职责,共同构建出高效、可维护的Web应用程序。本文将深入...

    mvc4+spring.net+nhibernate小例子

    在IT行业中,构建高效、可扩展的Web应用程序是至关重要的,而`mvc4+spring.net+nhibernate`的组合正是一种流行的选择。这个小例子展示了如何整合这三种技术来创建一个基于MVC架构的.NET应用程序,利用Spring.NET提供...

    ExtJS4.1+MVC4+Spring.NET1.3+EF5 整合项目数据库

    ExtJS4.1+MVC4+Spring.NET1.3+EF5 整合项目数据库(pdm、sql及sqlite数据库) 原文地址:http://blog.csdn.net/xz2001/article/details/8723266

    开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI

    开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo Domain:领域模型 Dao:持久层 Service:服务层 WebSite:表示层 Common:通用类

    Spring+NHibernate+WCF

    【Spring+NHibernate+WCF】是一个整合了三个关键技术的框架组合,用于构建高效、可扩展的.NET应用程序。Spring.NET是.NET平台上的轻量级应用框架,提供了依赖注入(DI)和面向方面编程(AOP)等核心功能;NHibernate...

Global site tag (gtag.js) - Google Analytics