精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Entity Framework的存儲模型切換實踐

數據庫
Entity Framework是微軟以ADO.NET為基礎所發展出來的對象關系對應解決方案。它完全支持上層穩定的概念架構與底層具體可變動的存儲架構之間的獨立和分離的,在本文中我們將具體實踐這一特性。

【本文選自微軟MVP林立的博客】最近做一個項目,里面需要同時支持SQL Server和SQLite。考慮到Entity Framework雖然目前還有諸多不足,但是基本上滿足于我的項目的要求,加上,也希望做一個嘗試,畢竟,雖然使用過去的技術和手段可能更可靠、更熟練、風險更低。

作者簡介

林立,微軟ASP.NET與C# MVP,專注和熱衷于將.NET平臺下較為成熟的新技術實踐于實際項目開發,近期著重于研究Entity Framework和Windows Workflow Foundation。

[[8789]]

但是,在技術行業,不能止步不前,如果某種新技術有你需要的某些特性,并且你認為值得嘗試,那就應該出手試試,雖然嘗試可能會失敗(以及不得不吞下失敗產生的苦果),但是如果成功,其帶來的好處也是很大的,也代表著你又往前邁進了一步。對于Entity Framework我也是新手,如果各位朋友發現文中有什么可以改進的地方或者不正確的地方,歡迎指點。

廢話不多說了,切入正題。Entity Framework需要三種文件支持:CSDL(概念架構定義語言)、SSDL(存儲架構定義語言)、MSL(映射規范語言),以及,一個據此生成的類文件(這里我們不研究這個類文件)。從這種結構上看,EF是完全支持上層穩定的概念架構與底層具體可變動的存儲架構之間的獨立和分離的。但通常我們利用VS的設計器只能生成一個單獨的.edmx文件,其中包含了CSDL、SSDL和MSL的內容,而本質上,它們3個是完全可以獨立成3個文件的。對于我們當前的目標,我們需要把SSDL從.edmx文件中剝離出來,并創立分別針對于SQL Server和SQLite的SSDL,下面詳述一下我的做法。

1、根據SQL Server中的表、視圖結構,創建SQLite數據庫

由于之前已經SQL Server上已經有了相關的表和視圖,因此以Sql Server為模板,創建SQLite數據庫,并在SQLite數據庫中創建與SQL Server中的表和視圖幾乎完全一樣的表和視圖。之所以說“幾乎完全一樣”,是因為SQLite中的類型系統與SQL Server中的差別很大。但是因為我沒有用到SQL Server中太特別的類型,因此這個問題的解決相對容易一些。我從SQL Server中生成表和視圖的腳本,然后修改一下讓SQLite可以識別和執行。

主要的修改包括,去掉“dbo”架構的指定,將自增標識列主鍵的聲明“int identity(1,1) primary key”改為“integer primary key autoincrement”,后者是SQLite中自增列主鍵的聲明語句,對于其他簡單類型,比如varchar/nvarchar, bit, money等等類型則保留原有的聲明不變,這些類型雖然SQLite并不“支持”,但是執行的時候并不會出錯,而且利用“.schema”命令查詢表架構時,這些類型的聲明是被保留的(后面在生成針對SQLite的EDM的時候,似乎也說明這些類型聲明產生了正面作用),另外,有一點,這次我沒有用到DateTime類型,因此無法斷定2種數據庫對它的支持的差別。SQLite的類型系統的特點是,動態性,雖然你創建表的時候可以指定某種“類型”,但是你完全可以向一個“int”列插入一個字符串。最后,我沒有在SQLite中創建任何外鍵約束,雖然SQLite支持外鍵,但是為了簡化復雜性(畢竟這是我的初次嘗試),就犧牲一些“完整性”吧。由于保證了SQLite中的表和視圖與Sql Server中的完全一致(除了類型上的固有差別),因此,可以保證兩者在創建EDM的時候,其CSDL和MSL是完全相同的。

2、依據SQL Server創建EDM

具體方法就和我們平常做的一樣。利用VS比較強大的設計器,從SQL Server中生成模型,并且創建好各個實體之間的Association。經過這一步,我們會得到一個.EDMX文件以及一個對應的類文件。

3、創建針對SQL Server的SSDL文件

用XML編輯器打開上面生成的.EDMX文件,可以很清楚的分辨出SSDL、CSDL、MSL三部分。我們把“<edmx:StorageModels>”節點下的<Schema>節點的所有內容Copy出來,然后新建一個后綴名為.SSDL的XML文件,把Copy出來的Schema元素粘貼進去,保存,就可以了。

4、創建針對SQLite的SSDL文件

這一步有2種辦法:將針對SQL Server的SSDL文件復制一份過來,然后將其修改成符合SQLite的要求。主要是去掉一些SQLite不支持的東西,比如,對于Schema="dbo"這樣的聲明。以及,修改Schema元素的Provider屬性和ProviderManifestToken屬性。前者需要修改為"System.Data.SQLite",后者修改為“ISO8601”(為何改成這2個值?看到后面就會知道了)利用VS的設計器重新針對SQLite數據庫生成一份EDMX文件,然后抽取其中的SSDL定義。

我采用的是第二種方法:這里需要用到針對SQLite的ADO.NET提供程序,即System.Data.SQLite。這個東西真正的下載地址在http://sourceforge.net/projects/sqlite-dotnet2/files/

下載完成之后,可以安裝,然后就可以在項目中引用System.Data.SQLite并利用設計器創建針對SQLite數據庫的EDM。創建和提取SSDL的內容與針對SQL Server的完全一樣,不再贅述,由此,我們可以得到一個針對SQLite的SSDL文件,其中Schema元素的Provider屬性值是System.Data.SQLite,而ProviderManifestToken屬性是ISO8601。

這里還需要指出的一點是,后來在測試的時候,發現運行失敗,原因是,在SSDL中存在不同的表/實體類型中引用和被引用的字段(外鍵字段)Type屬性不一致的情況,比如假設Company類型的CompanyID字段在Company類型中的type是integer,但是在引用它的Employee類型中的CompanyID字段的type是int,在這里,比如把它們2個統一為int或integer才可以。

5、通過修改連接字符串來切換不同的SSDL

在我的項目中,我將這2個SSDL分別作為2個不同的程序集的資源內嵌到程序集中。然后通過修改連接字符串來切換到某個SSDL。連接字符串看起來是這樣的:

 

  1. metadata=res://GE/GTDP.GTDEDM.csdl|res://LiteTDP/LiteTDP.GTDEDM.ssdl|res://GE/GTDP.GTDEDM.msl;  
  2. provider=System.Data.SQLite;  
  3. provider connection string=&quot;  
  4. Data Source=D:\Practice\SQLite\Ricky.db;&quot。 

注意連接字符串中對于CSDL、SSDL、MSL的指定,都指定到具體程序集的相關資源,其中黃色底色部分指定了使用SQLite的SSDL,而CSDL和MSL則直接使用了第二步中生成的EDMX中的內容。

補充:

在第二步中生成的EDMX被完整的保留下來,這樣,仍然可以隨時利用設計器打開和操作。而針對SQLite生成的EDMX在提取需要的SSDL之后被我刪掉了。當然了,是留是刪,完全看需要,很久沒有寫東西,都不會說話了,如果讀起來別扭,請多包涵了。

本文轉載自零度的火的博客,

原文地址:http://www.cnblogs.com/Ricky81317/archive/2010/02/22/1670867.html

【編輯推薦】

  1. 關系數據庫的根本問題分析及數據庫革命之走向
  2. 探尋關系數據庫和ORM的最佳替代者
  3. 數據庫機時代將到來 DBA面臨新挑戰
  4. 分布式緩存系統Memcached入門指導
  5. 扔掉沉沒成本 嘗試關系數據庫替代品OODBMS

 

 

【責任編輯:王曉東 TEL:(010)68476606】

 

 

責任編輯:王曉東 來源: 博客園
相關推薦

2024-06-18 12:58:12

2012-07-20 10:38:25

Entity FramEF

2021-02-04 18:04:53

DbContext開源對象

2016-08-16 09:06:07

Entity FramT4模板sql語句

2019-11-21 09:00:00

數據驗證EF Core

2009-12-22 14:46:09

ADO.NET Ent

2012-09-10 10:23:38

Entity Fram

2009-11-03 16:27:43

ADO.NET Ent

2009-12-30 14:03:36

ADO.NET Ent

2009-09-04 14:52:03

ADO.NET Ent

2024-09-23 00:00:00

數據庫場景Entity

2010-04-20 09:40:38

ADO.NET Ent

2019-11-13 15:40:00

Entity Fram審計數據數據庫

2009-12-30 10:14:41

ADO.NET Ent

2009-12-31 14:56:36

ADO.NET Ent

2009-12-30 09:10:04

ADO.NET Ent

2009-12-22 17:14:37

ADO.NET Ent

2009-12-23 16:00:50

ADO.NET Ent

2011-03-30 13:14:05

Entity Fram

2009-12-23 16:15:24

ADO.NET Ent
點贊
收藏

51CTO技術棧公眾號

欧美激情网址| 久久久123| 美女在线观看视频一区二区| 日韩中文字幕免费| av影片在线播放| 深夜福利视频一区二区| 国产欧美一二三区| 亚洲一区二区三区777| 国产精品不卡av| 欧美军人男男激情gay| 欧美一级专区免费大片| 91精品91久久久中77777老牛| 高清毛片在线看| 国产成人免费xxxxxxxx| 热99久久精品| 免费三片在线播放| 欧美日韩精品一区二区视频| 日韩精品一区二区三区三区免费| 激情六月丁香婷婷| 神马午夜伦理不卡 | 在线免费黄色| 成人免费电影视频| 国产伊人精品在线| 国产无遮挡呻吟娇喘视频| 午夜av一区| 亚洲深夜福利在线| 国产情侣久久久久aⅴ免费| 久久xxx视频| 亚洲成人动漫av| a级片一区二区| 搞黄视频免费在线观看| av电影天堂一区二区在线| 91色琪琪电影亚洲精品久久| 波多野结衣日韩| 国产精品美女久久久| 欧美成人免费小视频| 美国美女黄色片| 最新亚洲精品| 亚洲精品美女在线| 久久久久亚洲av成人网人人软件| 性欧美video另类hd尤物| 色哦色哦哦色天天综合| av高清在线免费观看| 日本成人不卡| 亚洲理论在线观看| 亚洲欧洲在线一区| 国产三区四区在线观看| 久久综合久久综合久久| 国产欧美日韩一区| 亚洲精品久久久久久久久久 | 人妻少妇精品视频一区二区三区| 日韩欧美一级| 欧美一级日韩免费不卡| 天天操天天爽天天射| 国产 日韩 欧美一区| 色综合久久久久综合| 亚洲欧洲日产国码无码久久99| 黄污视频在线观看| 亚洲在线视频网站| 成人一级生活片| 丁香花在线电影| 亚洲国产精品久久久久婷婷884| 黄色一级片国产| 日韩伦理电影网站| 亚洲一区av在线| 精品视频在线观看一区| 漫画在线观看av| 欧美视频免费在线| 能看的毛片网站| 成人一区视频| 欧美一区欧美二区| 性生活在线视频| 国产精品qvod| 亚洲欧美综合v| 久久日免费视频| 香港欧美日韩三级黄色一级电影网站| 久久九九国产精品怡红院| 久久高清内射无套| 亚洲大胆av| 日韩女在线观看| 在线视频 中文字幕| 九一九一国产精品| 91久久极品少妇xxxxⅹ软件| 黄色片一区二区三区| 2欧美一区二区三区在线观看视频| 免费h精品视频在线播放| 午夜激情视频在线观看| 亚洲黄色尤物视频| 九色在线视频观看| 91精品美女| 欧美成人r级一区二区三区| 五月天激情小说| 成人久久电影| 欧美精品aaa| 亚洲高清在线看| 国产成人av一区二区三区在线 | 国内综合精品午夜久久资源| 人人爽久久涩噜噜噜网站| 久久久精品日本| 国产视频1区2区3区| 久久天堂久久| 亚洲免费视频一区二区| 在线看的片片片免费| 日韩一区二区免费看| 国产精品影片在线观看| 黄色一级a毛片| 欧美国产日韩亚洲一区| 国产精品视频二| 日本在线中文字幕一区二区三区| 欧美一三区三区四区免费在线看| 久久精品综合视频| 国产精品99久久精品| 羞羞色国产精品| 国产又粗又猛又黄又爽无遮挡| 99免费精品视频| 美国av在线播放| 黑人巨大精品| 精品国产三级a在线观看| 我想看黄色大片| 亚洲人成久久| 成人在线视频福利| 美国一级片在线免费观看视频| 亚洲码国产岛国毛片在线| 欧美 日韩 国产 激情| 91久久精品无嫩草影院 | 免费黄色在线视频| 欧美激情日韩| 亚洲www视频| 丝袜美腿美女被狂躁在线观看| 欧美日韩国内自拍| 先锋资源在线视频| 国产精品福利在线观看播放| 国产成人自拍视频在线观看| 人人妻人人澡人人爽久久av| 亚洲精品一二三四区| 天天干天天操天天玩| 亚洲尤物av| 亚州国产精品久久久| 国产高清精品软件丝瓜软件| 国产精品沙发午睡系列990531| 国产视频一视频二| 97人妻精品一区二区三区免 | 亚洲综合第一页| 自拍视频在线| 欧美性猛交xxxx乱大交退制版| 青青草视频成人| 一本色道久久综合亚洲精品不| 国产精成人品localhost| 天堂av资源在线观看| 4438成人网| 欧美第一页在线观看| 久久精品99国产精品| 亚洲精品影院| 日本a人精品| 久久九九有精品国产23| 国产精品久久久午夜夜伦鲁鲁| 国产精品美女久久久久久2018| a在线观看免费视频| 日韩欧美视频专区| 国产欧亚日韩视频| 精品视频在线一区二区| 91麻豆精品久久久久蜜臀 | 国产福利在线看| 色狠狠色狠狠综合| 大胸美女被爆操| 国产在线一区二区| 日本不卡久久| 福利一区二区| 欧美成人久久久| 蜜桃久久一区二区三区| 精品色蜜蜜精品视频在线观看| 亚洲狠狠婷婷综合久久久久图片| 久久久一二三| 亚洲欧美日产图| 在线精品视频一区| 91成人福利在线| 91网页在线观看| 日韩欧美在线不卡| 西西44rtwww国产精品| 久久久久国产精品麻豆| av中文字幕网址| 一区在线视频观看| 日韩精品一区二区三区色偷偷| 四虎精品在线观看| 久久久久久国产免费| 日本福利午夜视频在线| 欧美日韩视频在线第一区 | 色综合中文综合网| 亚洲色图日韩精品| 国产成人h网站| 国产wwwxx| 狠狠入ady亚洲精品| 日韩主播视频在线| 国产日本一区二区三区| jizz欧美| 午夜精品蜜臀一区二区三区免费 | 国产成人福利av| 国产精品99久久久久久www| 国产精品扒开做爽爽爽的视频 | jizz日本免费| 精品影视av免费| jizzjizzxxxx| 欧美黄色一区| 亚洲成人第一| 日韩精品欧美大片| 99r国产精品视频| 日韩一级二级| 性欧美视频videos6一9| 三区四区电影在线观看| 日韩极品精品视频免费观看| 99久久婷婷国产一区二区三区| 黄色一区二区三区| 日本福利片在线观看| 久久精品水蜜桃av综合天堂| 又色又爽又黄18网站| 蜜桃在线一区二区三区| 免费一级特黄特色毛片久久看| 97偷自拍亚洲综合二区| 免费中文日韩| 精品少妇3p| 99re在线播放| av成人在线网站| 日本亚洲欧美三级| 97天天综合网| 欧美激情精品久久久久久蜜臀| 国家队第一季免费高清在线观看| 亚洲第一精品自拍| 99久久国产免费| 欧美日韩夫妻久久| 无码人妻丰满熟妇精品区| 亚洲国产成人高清精品| 三级av在线免费观看| 中文字幕欧美激情| 微拍福利一区二区| 久久一区二区视频| 在线观看国产网站| 成人国产电影网| 91视频免费入口| 国产在线精品不卡| 日本高清久久久| 美国三级日本三级久久99| 国产综合免费视频| 亚洲男人影院| 日韩欧美精品在线观看视频| 午夜一区在线| 无码精品国产一区二区三区免费| 国产婷婷精品| 国产91对白刺激露脸在线观看| 亚洲国产激情| 成人一区二区免费视频| 亚洲精选国产| 欧美日韩成人免费视频| 国产一区二区你懂的| 大陆极品少妇内射aaaaa| 国产亚洲精品自拍| 黄色片久久久久| 奇米影视一区二区三区小说| 好男人www社区| 男男视频亚洲欧美| 久久人人爽av| 国产一区在线精品| 制服下的诱惑暮生| 国产jizzjizz一区二区| 国产 xxxx| 久久久久久久av麻豆果冻| av女人的天堂| 国产精品福利一区二区三区| www.5588.com毛片| 亚洲精品亚洲人成人网| 69av视频在线| 福利视频导航一区| 亚洲性猛交富婆| 欧美精品18+| 精品久久久免费视频| 欧美精品一区二区不卡| 欧美伦理影视网| 中日韩美女免费视频网址在线观看| av在线中文| 成人444kkkk在线观看| bbw在线视频| 国产精品久久久91| 国产美女视频一区二区| 精品综合在线| japanese国产精品| 日韩中文在线字幕| 亚洲尤物影院| 在线播放av中文字幕| 床上的激情91.| 人妻少妇无码精品视频区| 综合久久给合久久狠狠狠97色 | 欧美日本精品一区二区三区| 成人1区2区3区| 亚洲欧洲免费视频| a级影片在线| 国产成+人+综合+亚洲欧洲 | 日韩av中文字幕在线| 国产三级视频在线| 欧美另类在线播放| 欧美aaa视频| 国产精品播放| 水蜜桃精品av一区二区| 9久久9毛片又大又硬又粗| 久久电影国产免费久久电影| 少妇一级淫片免费放播放| 国产精品美女久久久久高潮| 在线看的片片片免费| 亚洲综合影院| 免费久久99精品国产自| 国产日韩欧美中文在线播放| 成人在线不卡| 国产主播一区二区三区四区| 哺乳挤奶一区二区三区免费看 | 国产麻花豆剧传媒精品mv在线| 国产一区二区美女| 老熟妇一区二区| 亚洲成人资源网| 国产孕妇孕交大片孕| 亚洲欧美国产一本综合首页| 久久一卡二卡| 成人国产精品av| av中文一区| 日韩av在线综合| 亚洲婷婷影院| 亚洲午夜视频| 制服丝袜亚洲色图| 国产精品50p| 第一页在线观看| 亚洲美女一区| 日韩在线视频观看| 国产福利久久久| 欧美性受xxxx黑人xyx| 手机福利在线| 欧美激情影音先锋| 亚洲欧美在线综合| 视频一区三区| 日韩在线一区二区三区| 亚洲av网址在线| 婷婷亚洲图片| 免费日韩在线观看| 韩国女主播成人在线观看| 毛片久久久久久| 欧美日韩黄色一区二区| 91在线视频| 国产精品视频一| 日韩中文字幕高清在线观看| 91制片厂毛片| 国产精品乱码久久久久久| 精品无码一区二区三区的天堂| 亚洲乱码国产乱码精品精天堂 | 精品网站aaa| 久久av综合网| 成人美女视频在线观看| 久久精品视频8| 亚洲国产成人久久| 2019中文字幕在线电影免费 | 亚洲h在线观看| 人妻少妇精品无码专区久久| 国内精品美女av在线播放| 极品束缚调教一区二区网站| 色欲色香天天天综合网www| 99在线热播精品免费| 国产成人精品777777| 国产一区二区动漫| 国外成人福利视频| 一区二区三区一级片| 国产在线精品免费| 久久久精品人妻一区二区三区四 | 精品视频全国免费看| 福利在线观看| 国产欧美 在线欧美| 亚洲精品888| 美女久久久久久久久| 精品毛片三在线观看| 国产永久免费高清在线观看视频| 国产精品免费电影| 一个色综合网| 蜜臀aⅴ国产精品久久久国产老师| 午夜精品久久久久久久久| 欧美成人片在线| 国产综合在线观看视频| 激情国产一区| 精品无码人妻一区| 欧美无砖砖区免费| 污污的网站在线免费观看| 久久久久久久久久久一区| 热久久一区二区| 青青草原国产视频| 日韩精品欧美国产精品忘忧草| 日韩av免费| 特级西西人体www高清大胆| www.久久久久久久久| 一级特黄免费视频| 欧美另类交人妖| 欧美激情在线精品一区二区三区| 国产探花在线观看视频| 亚洲成人综合视频| 日韩美女网站| 快播日韩欧美| 国产a区久久久| 中文字幕精品在线观看|