今天开始用Nhibernate做为自己的ORM,但是做的过程中确实遇到了好多问题,现在将问题收集起来以防日后出现相同的问题,

总结下:

这就是我的整个项目,现在配置下hibernate.cfg.xml

<?xml version="1.0" encoding="utf-8"?>
<!--
This template was written to work with NHibernate.Test.
Copy the template to your NHibernate.Test project folder and rename it in hibernate.cfg.xml and change it
for your own use before compile tests in VisualStudio.
-->
<!-- This is the System.Data.dll provider for SQL Server -->
<hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
    <session-factory name="NHibernate.Test">
        <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
        <property name="connection.connection_string">
      server=127.0.0.1;database=Subject;uid=sa;pwd=zhangwei
    </property>
        <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
  </session-factory>
</hibernate-configuration>

现在新建User.cs类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Subject.Model
{
    /// <summary>
    /// 用户表
    /// </summary>
    public class User
    {
        /// <summary>
        /// 用户id
        /// </summary>
        public string Id { get; set; }

/// <summary>
        /// 名称
        /// </summary>
        public string Name { get; set; }

/// <summary>
        /// 密码
        /// </summary>
        public string Password { get; set; }

/// <summary>
        /// 性别
        /// </summary>
        public string Sex { get; set; }

/// <summary>
        /// 个人简介
        /// </summary>
        public string BriefIntroduction { get; set; }

/// <summary>
        /// 创建时间
        /// </summary>
        public DateTime? CreateDt { get; set; }
    }
}

现在映射这个User.cs类,新建User.hbm.xml文件并且进行配置,如下:

<?xml version="1.0" encoding="utf-8" ?>
  <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
    namespace="Subject.Model" assembly="Subject.Model">
  <class name="Subject.Model.User" table="User" lazy="false">
    <id name="Id">
      <column name="Id" sql-type="varchar(40)" not-null="true"/>
      <generator class="uuid.hex" />
    </id>
    <property name="Name">
      <column name="Name" sql-type="varchar(20)" not-null="false" />
    </property>
    <property name="Password">
      <column name="Password" sql-type="varchar(20)" not-null="false" />
    </property>
    <property name="Sex">
      <column name="Sex" sql-type="varchar(2)" not-null="false" />
    </property>
    <property name="BriefIntroduction">
      <column name="BriefIntroduction" sql-type="varchar(500)" not-null="false" />
    </property>
    <property name="CreateDt">
      <column name="CreateDt" sql-type="datetime" not-null="false" />
    </property>
  </class>
</hibernate-mapping>

注意设置User.hbm.xml文件属性,XML文件的默认生成操作为“内容”,这里需要修改为“嵌入的资源”,

然后测试:

public IList<User> Get()
        {
            try
            {
                return _session.CreateQuery("from Subject.Model.User").List<User>();
            }
            catch (Exception e)
            {
                throw;
            }
        }

发现数据为空,如图:

不可能啊?因为数据库里有数据啊,如图:

这是怎么回事,找了好久,终于被我找到问题的所在,如图:

原来要加这个,但是运行之后又出现了问题,唉,写个NHibernate出现这么多问题,自己跟自己说:淡定!

你猜是什么问题?原来Sqlserver2008系统表里有User表,你再建这个表就会有歧义,当然就会出现问题了,

所以我把User表改成Users表就OK了!

终于成功了,不容易啊!

Nhibernate配置和访问数据问题的更多相关文章

  1. vue中访问数据接口的配置

    业务API接口地址: http://localhost:3816/api/ 前端UI浏览地址:http://127.0.0.1:8080/#/home 由于同源策略的问题: 需要配置代理: 在开发环境 ...

  2. 深入了解Entity Framework框架及访问数据的几种方式

    一.前言 1.Entity Framework概要 Entity Framework是微软以ADO.NET为基础所发展出来的对象关系映射(O/R Mapping)解决方案.该框架曾经为.NET Fra ...

  3. 配置yii访问远程数据库

    1.将hdp002的数据库放到hdp004后,发现yii出现找不到表messages的迹象.用hdp002远程登录hdp004后发现,原来是hdp004没有授权给hdp002,用下面的sql语句即可: ...

  4. 在 SharePoint 2010 中访问数据

    转:http://blog.banysky.net/?p=81001 数据访问的关键方法有哪些? | 使用查询类 | 使用 SPQuery | 使用 SPSiteDataQuery | 使用 LINQ ...

  5. Android Linux自带iptables配置IP访问规则

    利用Linux自带iptables配置IP访问规则,即可做到防火墙效果

  6. Nginx (安装+ 配置域名+ 访问认证 +发布文件)

    一.Nginx介绍: Nginx是一款高性能的HTTP和反向代理服务器,能够选择高效的epoll(linux2.6内核).kqueue(freebsd).eventport(solaris10)作为网 ...

  7. Vue用axios跨域访问数据

    Vue用axios跨域访问数据axios是vue-resource的替代品,vue-resource不再维护.安装axios:npm install axios使用vue-cli开发时,由于项目本身启 ...

  8. Linux 配置SFTP,配置用户访问权限

    之前我服务器是使用的Windows Server 2003,这段时间由于访问量变大我还是机智的换成Linux了,在搭建FTP的时候看到网上都是推荐vsftpd,不过我不推荐这个家伙,看官且看下文. 我 ...

  9. spark on yarn模式下配置spark-sql访问hive元数据

    spark on yarn模式下配置spark-sql访问hive元数据 目的:在spark on yarn模式下,执行spark-sql访问hive的元数据.并对比一下spark-sql 和hive ...

随机推荐

  1. iOS之用xib给控件设置圆角、边框效果

    xib中为各种控件设置圆角 通过代码的方式设置 @interface ViewController () @property (weak, nonatomic) IBOutlet UIView *my ...

  2. mkfs.xfs命令没找到

    yum install xfsprogs xfsdump

  3. Leetcode 242. Valid Anagram(有效的变位词)

    Given two strings s and t, write a function to determine if t is an anagram of s. For example, s = & ...

  4. 目前项目wordpress插件记录

    Restrict User Content WordPress 后台只显示当前登录用户的文章.页面和媒体 Client Dash 可以根据不同的角色生成不同的后台的菜单

  5. java算法小知识练习

    偶尔翻开了以前的练习题,不自觉又想随手敲一遍,虽然有些思想依然是那么老套,但毕竟也算是对知识的巩固 了. 一.题目:有1.2.3.4四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 具体 ...

  6. nvl()函数

    Oracle里面的nvl()函数 Nvl(字段名,0):如果你某个字段为空,但是你想让这个字段显示0,nvl(字段名,0) ,就是当你选择出来的时候,这个字段虽然为空,但是显示的是0,当然这个0也可以 ...

  7. 【高性能服务器】Tomcat剖析

    引言 Tomcat是一个流行的servlet容器,对于开发人员来说整体和容器打交道有必要花一些时间爱你了解其内部结构.本文将从一下几个方面来剖析其内部结构. 整体结构 连接器 初始化过程 如何处理一个 ...

  8. 一般处理程序生成简单的图片验证码并通过html验证用户输入的验证码是否正确

    一般处理程序生成简单的图片验证码并通过html验证用户输入的验证码是否正确       最近没事研究了下验证码的的动态生成及通过cookie实现HTML页面对用户输入的验证码的校验,简要如下: 1.写 ...

  9. poj3660 Cow Contest(Floyd-Warshall方法求有向图的传递闭包)

    poj3660 题意: 有n头牛, 给你m对关系(a, b)表示牛a能打败牛b, 求在给出的这些关系下, 能确定多少牛的排名. 分析: 在这呢先说一下关系闭包: 关系闭包有三种: 自反闭包(r), 对 ...

  10. IOS-UI-UIDynamic(二)

    UIPushBehavior :推动效果 UIAttachmentBehavior:附着效果 UISnapBehavior:迅速移动效果 一.重要的属性 UIPushBehavior :推动效果 ty ...