初探MS SQL CE+Codesmith

原来的程序是使用sqlite这个嵌入式数据库作为Remit(code name)的数据源的,因为NHibernate支持这 个,然而有一点不好的是sqlite不支持外键,导致可悲的codesmith不能得到关系,无法生成我喜欢的多对多 映射.如果手写就要写映射xml文件以及业务实体类,这可是我这种懒人不喜欢的.况且数据库经常变更,良 好的代码生成可以做到数据库与代码的同步.

硬盘坏了也是一种契机,我突然想到了Sql Server还有一个CE版本,现在不止提供For Mobile的,还提供 桌面版.这种可爱的嵌入式数据库可比没意思的Access好得多了. 这东西虽然没store produce(其实有ORM 基本没必要用),但是索引啊,表关系啊还是很全面的.微软的东西就是好,造福全懒人嘛..

然而我的数据库原来是Access的,在网上找了半天工具只找到一个Sql To Sql Ce的工具.于是用Access 的升迁向导升迁到MS SQL,然后在MS SQL Server里面建立表关系.然后用那个工具导入到SQL CE里面. 然 后又自己编译了一个Codesmith的数据库Schema provider(因为以前这个是for 4.0的,而我的是5.0).

那个迁移工具貌似有点问题,没有把表关系完全copy过去,自己的SQL Menagement Studio版本可能太低 ,不能打开3.5的CE数据库.结果用Codesmith就没法生成我要的关系.不爽.想到NHibernate其实对于表关系 是不依赖于数据库的,只要有表就可以了,所以想到一个特别二的方法,就是用MS SQL做Codesmith的数据源 ,生成文件,而程序中则使用迁移后的CE数据库.(其实感觉直接用MS SQL Server也可以,最后发布的时候换 CE)

不过最郁闷的事情是在使用NHibernate进行测试的时候,居然提示我某个查询不能执行,而我在VS 2008 的数据库的查询里面那个查询是可以运行的SELECT this_.ID as ID2_0_, this_.BookName as BookName2_0_, this_.LangID as LangID2_0_ FROM dbo.Book this_ 我实在是很无奈啊,找错误 NHibernate扔出来的异常的InnerException也看不出什么来,我就自己用ADO写了一个

System.Data.SqlServerCe.SqlCeConnection conn=new System.Data.SqlServerCe.SqlCeConnection(@"Data Source=E:\Loning\Loning.Remit\db.sdf");

SqlCeCommand command=new SqlCeCommand("SELECT this_.ID as ID2_0_, this_.BookName as BookName2_0_, this_.LangID as LangID2_0_ FROM dbo.Book this_",conn);

conn.Open();

最后这东西提示表名异常,我一检查表名,想起由于是Sql Server生成的,带着个dbo.前缀,发现生成的 NHibernate的配置文件

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Loning.Remit.BusinessObjects" assembly="Loning.Remit">
    <class name="Loning.Remit.BusinessObjects.Book, Loning.Remit" table="dbo.Book" lazy="true">
        <id name="Id" column="ID">
             <generator class="assigned" />
        </id>
        <property name="BookName" column="BookName" />
        <many-to-one name="Language" column="LangID" class="Language" />
        <bag name="Words" lazy="true" cascade="all" inverse="true" >
            <key column="BookID"></key>
            <one-to-many class="Word"></one-to-many>
        </bag>
    </class>
</hibernate-mapping>

其中存在dbo.,去掉之后正常,于是更改Codesmith的这个模板.把table.FullName改成table.Name,生成 后配置文件正确,而后重新生成一遍,编译.过了. 我从下午5点开始折腾,一直折腾到11点,总算把这些问题 解决了,希望CE这东西可以好好工作...

时间: 2024-10-23 11:11:50

初探MS SQL CE+Codesmith的相关文章

MS SQL基础教程:SQL Server 2000的版本和系统需求

SQL Server 2000 的常见版本如下: ·企业版(Enterprise Edition) 支持所有的SQL Server 2000 特性,可作为大型Web站点.企业OLTP(联机事务处理)以及数据仓库系统等的产品数据库服务器. ·标准版(Standard Edition) 用于小型的工作组或部门 ·个人版(Personal Edition) 用于单机系统或客户机 ·开发者版(Developer Edition) 用于程序员开发应用程序,这些程序需要SQL Server 2000 作为数

.NET Campact Framework下SQL CE兼容性问题

在.NET Campact Framework常用SQL CE数据库进行数据存储,SQL CE是一个扩 展名为*.sdf的文件数据库,曾经命名为SQL Server for Windows CE和SQL Server Mobile Edition,最新版本命名为SQL Server Compact Edition,在文章 中统一叫SQL CE.本文主要讲述SQL CE 3.0和SQL CE 3.5的兼容性问题. .NET Campact Framework下开发SQL CE统一使用 System

Jboss下MS SQL Server配置指导

本文提供一个详细而易懂的指导,让你快速掌握使用Microsoft SQL Server关系数据库管理系统(RDBMS)和JBoss J2EE 应用 服务器套件来开发,发布和运行企业Java应用程序的基本知识. JBoss是一个业界领先的开放源码的符合标准的J2EE应用服务器套件的名称.该套件包括JBossServer EJB v1.1 Container 和server, JBossMQ JMS 1.0 implemetation, JBossNS JNDI implemetation,JBos

MS SQL 需要定期清理日志文件

前言碎语     关于对SQL SERVER 日志文件管理方面了解不多的话,可以参考我的这篇博客文章"MS SQL 日志记录管理", 不过这篇文章只是介绍对SQL SERVER日志记录的深入认知了解,并没有提出如何管理日志文件的方案,如果你有兴趣的话,倒不妨可以钻研一下如何管理.提取日志记录信息,这是数据库 精细化管理的一个方面,如果手头管理的服务器过多,事情过多,你很难做到精细化管理!很多事情都忙不过来,需要时间去做!   问题现象     这几天有台数据库服务器一天会收到8封左右的

贡献给大家php4下的MS SQL Server动态链接库

server|动态|链接 PHP Version 4.0b4pl1数据库连结只能使用ODBC和MySQL,没有提供MS SQL的动态库,为提高连结效率,本站编译了MSSQL的动态库,MSSQL的动态库是可以使用永久连结(mssql_pconnect )的.请试用者访问http://member.netease.com/~haioorhttp://haioweb.home.chinaren.com/download.html

体验MS SQL备份新版本6.1

压缩,加密和加固MS SQL服务器备份 Ø 创建健全的备份--使用网络还原和其他特征加固您的备份 Ø 节省时间和空间--压缩数据库备份高达95% Ø 保护数据--使用多达256位AES加密技术(SQL Backup 专业版) Ø 监视备份--图形化呈现识别工作冲突行为 网络还原使得SQL备份专业版6处于备份工具列表的首要位置,佼佼者,而且我强烈推荐使用在SQL服务器2008本地备份基础上的SQL备份. SQL备份是一个成熟且备受赞誉的用来创建,压缩和加固SQL服务器备份的工具. SQL备份兼容2

使用publishing转移MS SQL数据

最近,将网站从国内网站搬移到了Lunarpage,程序转移比较简单,使用cuteftp上传上去就可以了.但是数据库转移一直都是很棘手的一个问题.本文介绍数据库转移的方法. 数据库转移最简单的方法是使用DTS,但是Lunarpages数据库不支持远程数据库链接,所以无法使用DTS,因此只好使用publishing转移数据. 具体步骤如下: Step1. 运行 SqlPubWiz.exe Publishing类似MS SQL的一个插件,你可以到 http://www.microsoft.com/do

MS SQL 2005 安全设置

安全 拿到MS SQL 2005还没有一天,总的来说,MS SQL 2005的安全性比SQL 2000要强上不少,不过默认设置还是有和原来一样的漏洞,下面我们来修改一下默认设置. 1.安装MSSQL时使用混合模式,当然SA密码最好不能为空,在SQL2005中,可以对SA这个超级用户名进行修改或删除.use masterALTER LOGIN [sa] WITH NAME=[zxs] /*修改SA帐号*/sp_password '111111','123456','sa' /*修改SA密码*/使用

在Linux 下 访 问MS SQL Server 数 据 库(转载)

server 宁 波 保 税 区 官 委 会 计 算 中 心 董 保 华 ---- Linux 作 为 一 个 免 费 的Unix 类 操 作 系 统, 以 其 开 放 性 源 代 码. 多 任 务.X window 等 特 点 为 众 多 的 用 户 所 采 用, 并 有 很 多 企 业 采 用Linux 来 作 为 其 内 部 网 的 全 功 能 服 务 器(WWW,FTP,Email.DNS). 企 业 的 内 部 网 不 仅 要 提 供 文 本 信 息 的 访 问, 还 要 能 提 供