国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > SQL Server > 正文

淺談初探MS SQL CE Codesmith

2024-08-31 00:46:27
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

原來(lái)的程序是使用sqlite這個(gè)嵌入式數(shù)據(jù)庫(kù)作為Remit(code name)的數(shù)據(jù)源的,因?yàn)镹Hibernate支持這個(gè),然而有一點(diǎn)不好的是sqlite不支持外鍵,導(dǎo)致可悲的codesmith不能得到關(guān)系,無(wú)法生成我喜歡的多對(duì)多映射.如果手寫就要寫映射xml文件以及業(yè)務(wù)實(shí)體類,這可是我這種懶人不喜歡的.況且數(shù)據(jù)庫(kù)經(jīng)常變更,良好的代碼生成可以做到數(shù)據(jù)庫(kù)與代碼的同步.

硬盤壞了也是一種契機(jī),我突然想到了Sql Server還有一個(gè)CE版本,現(xiàn)在不止提供For Mobile的,還提供桌面版.這種可愛(ài)的嵌入式數(shù)據(jù)庫(kù)可比沒(méi)意思的Access好得多了. 這東西雖然沒(méi)store function(其實(shí)有ORM基本沒(méi)必要用),但是索引啊,表關(guān)系啊還是很全面的.微軟的東西就是好,造福全懶人嘛..

然而我的數(shù)據(jù)庫(kù)原來(lái)是Access的,在網(wǎng)上找了半天工具只找到一個(gè)Sql To Sql Ce的工具.于是用Access的升遷向?qū)w到MS SQL,然后在MS SQL Server里面建立表關(guān)系.然后用那個(gè)工具導(dǎo)入到SQL CE里面. 然后又自己編譯了一個(gè)Codesmith的數(shù)據(jù)庫(kù)Schema provider(因?yàn)橐郧斑@個(gè)是for 4.0的,而我的是5.0).

那個(gè)遷移工具貌似有點(diǎn)問(wèn)題,沒(méi)有把表關(guān)系完全copy過(guò)去,自己的SQL Menagement Studio版本可能太低,不能打開(kāi)3.5的CE數(shù)據(jù)庫(kù).結(jié)果用Codesmith就沒(méi)法生成我要的關(guān)系.不爽.想到NHibernate其實(shí)對(duì)于表關(guān)系是不依賴于數(shù)據(jù)庫(kù)的,只要有表就可以了,所以想到一個(gè)特別二的方法,就是用MS SQL做Codesmith的數(shù)據(jù)源,生成文件,而程序中則使用遷移后的CE數(shù)據(jù)庫(kù).(其實(shí)感覺(jué)直接用MS SQL Server也可以,最后發(fā)布的時(shí)候換CE)

不過(guò)最郁悶的事情是在使用NHibernate進(jìn)行測(cè)試的時(shí)候,居然提示我某個(gè)查詢不能執(zhí)行,而我在VS 2008的數(shù)據(jù)庫(kù)的查詢里面那個(gè)查詢是可以運(yùn)行的SELECT this_.ID as ID2_0_, this_.BookName as BookName2_0_, this_.LangID as LangID2_0_ FROM dbo.Book this_ 我實(shí)在是很無(wú)奈啊,找錯(cuò)誤NHibernate扔出來(lái)的異常的InnerException也看不出什么來(lái),我就自己用ADO寫了一個(gè)

System.Data.SqlServerCe.SqlCeConnection conn=new System.Data.SqlServerCe.SqlCeConnection(@"Data Source=E:LoningLoning.Remitdb.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生成的,帶著個(gè)dbo.前綴,發(fā)現(xiàn)生成的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的這個(gè)模板.把table.FullName改成table.Name,生成后配置文件正確,而后重新生成一遍,編譯.過(guò)了. 我從下午5點(diǎn)開(kāi)始折騰,一直折騰到11點(diǎn),總算把這些問(wèn)題解決了,希望CE這東西可以好好工作...

  內(nèi)容膚淺,還請(qǐng)見(jiàn)諒.發(fā)到首頁(yè),實(shí)在惶恐.不發(fā)又基本沒(méi)人看...希望對(duì)大家在做這方面的時(shí)候有所幫助吧,今天google中文資料實(shí)在少.

 

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 澄迈县| 犍为县| 承德市| 明水县| 积石山| 屏山县| 微博| 吉水县| 大荔县| 延边| 桦南县| 锦州市| 普陀区| 余干县| 车致| 闻喜县| 长垣县| 灌云县| 和平区| 扎兰屯市| 五家渠市| 北碚区| 横山县| 治多县| 香河县| 左贡县| 武邑县| 禹城市| 双桥区| 鹤庆县| 山西省| 美姑县| 灵宝市| 库车县| 昂仁县| 墨脱县| 河池市| 正定县| 盘锦市| 甘谷县| 广元市|