国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Entity Framework建模的列控數(shù)據(jù)管理研究

2021-10-31 12:06:32李湘宜鐘遠寧
鐵路通信信號工程技術(shù) 2021年10期
關(guān)鍵詞:主鍵列控數(shù)據(jù)表

陳 姣,李湘宜,鐘遠寧

(卡斯柯信號有限公司,北京 100160)

國內(nèi)高鐵采用CTCS-2、CTCS-3級列控系統(tǒng),列控數(shù)據(jù)是列控系統(tǒng)中各個子系統(tǒng)及其設(shè)備的數(shù)據(jù)源,包括信號數(shù)據(jù)、線路坡度、線路速度、應(yīng)答器信息、車站進路數(shù)據(jù)表等,這些基礎(chǔ)數(shù)據(jù)的正確性與否,直接關(guān)系到行車的安全性。隨著國內(nèi)高鐵線路的不斷延伸,各列控系統(tǒng)對列控數(shù)據(jù)管理的要求進一步提高。

Entity Framework技術(shù)是新一代微軟.NET平臺中數(shù)據(jù)存取技術(shù),是一種對象/關(guān)系映射(Object/Relational Map-ping,ORM)技術(shù),實現(xiàn)了采用關(guān)系模型來組織數(shù)據(jù)與實體業(yè)務(wù)對象間的一一映射,解決數(shù)據(jù)持久化問題,不但可以提高開發(fā)效率,還可以進一步提高列控數(shù)據(jù)管理的有效性。

1 列控數(shù)據(jù)組成

列控工程數(shù)據(jù)主要包括正線信號數(shù)據(jù)表、線路速度/坡度表、橋梁隧道信息表、分相數(shù)據(jù)表、線路里程斷鏈明細表、車站信息表、應(yīng)答器位置表、進路信息表、RBC信息表、線路坡度表、道岔信息表、大號碼道岔數(shù)據(jù)包發(fā)送條件檢查范圍表、里程系信息表、異物侵限表、車站表、站內(nèi)軌道區(qū)段信息表和接觸網(wǎng)分相數(shù)據(jù)表。

2 Entity Framework技術(shù)介紹

2.1 傳統(tǒng)方法

一般而言,開發(fā)人員利用傳統(tǒng)技術(shù)進行系統(tǒng)開發(fā)時,需要和數(shù)據(jù)庫進行數(shù)據(jù)交換,在.NET平臺中,數(shù)據(jù)存儲交換技術(shù)通常有ODBC、DAO、ADO、ADO.NET等幾種數(shù)據(jù)層訪問技術(shù),其中,開發(fā)者最常用的是手寫SQL語句,然后通過ADO.NET連接類與數(shù)據(jù)庫進行交互,這是較為常見的數(shù)據(jù)庫開發(fā)技術(shù)。雖然這種技術(shù)接近底層,可以直接操作數(shù)據(jù)庫,但也存在SQL操作失誤風(fēng)險,并且當業(yè)務(wù)發(fā)生細小改變時也需要對數(shù)據(jù)庫訪問的SQL語言進行大量的修改,因此傳統(tǒng)方法需要耗費大量的時間和精力。

針對這種現(xiàn)狀,Entity Framework技術(shù)能夠極大改善傳統(tǒng)技術(shù)的缺點。

2.2 Entity Framework技術(shù)概述

Entity Framework技術(shù)的核心是實體數(shù)據(jù)模型(Entity Data Model,EDM)?;趯嶓w數(shù)據(jù)訪問的模型如圖1所示。

圖1 Entity Framework訪問模型Fig.1 Entity Framework access model

Entity Framework技術(shù)遵守對象/關(guān)系映射(ORM)的思想,抽象化數(shù)據(jù)結(jié)構(gòu),將每個數(shù)據(jù)庫對象都抽象成為應(yīng)用程序?qū)ο?entity),而數(shù)據(jù)的字段都轉(zhuǎn)換為屬性(property),關(guān)系轉(zhuǎn)換為結(jié)合屬性(association)。實體數(shù)據(jù)模型用于在實體框架基礎(chǔ)上生成應(yīng)用程序和數(shù)據(jù)的應(yīng)用,包括概念模型、存儲模型以及映射3大部分。概念模型主要負責訪問對象與屬性;存儲模型主要描述數(shù)據(jù)庫中的數(shù)據(jù)結(jié)構(gòu)體,比如表、主鍵、列、索引等,與Provider一起,負責實際對數(shù)據(jù)庫的訪問;映射將上方的概念模型層和下方的儲存模型層的數(shù)據(jù)結(jié)構(gòu)對應(yīng)。

傳統(tǒng)方法與Entity Framework方法對比情況,如表1所示。

表1 傳統(tǒng)方法與Entity Framework對比Tab.1 Comparison of traditional method with Entity Framework

2.3 3種數(shù)據(jù)建模方式

Entity Framework提供3種數(shù)據(jù)建模方式。

1)Code-First模式

該模式可以先構(gòu)建業(yè)務(wù)模型,然后通過映射XML文件,完成模型到數(shù)據(jù)庫的映射,生成數(shù)據(jù)庫表。與傳統(tǒng)的先建表再編碼的方式相比,更加符合以業(yè)務(wù)數(shù)據(jù)流為中心的設(shè)計思想,而不是以數(shù)據(jù)庫為中心進行開發(fā)驅(qū)動。

2)Database-First模式

該模式是比較傳統(tǒng)的數(shù)據(jù)建模方式,先完成數(shù)據(jù)庫模型設(shè)計,再生成實體層的實體類,當系統(tǒng)中僅存在一個數(shù)據(jù)庫時,這種方法就比較簡單,只需做好原數(shù)據(jù)庫與實體間的映射關(guān)系,EF可以自動生成數(shù)據(jù)模型,且包含一一對應(yīng)的類及其屬性變量。

3)Model-First模式

該模式是利用Visual Studio設(shè)計出業(yè)務(wù)模型及它們之間的映射關(guān)系,然后再根據(jù)這些模型和映射關(guān)系生成數(shù)據(jù)庫表及代碼文件。

3 列控數(shù)據(jù)管理應(yīng)用實例

列控系統(tǒng)中的關(guān)鍵設(shè)備及其仿真軟件:無線閉塞中心、列控中心、計算機聯(lián)鎖、臨時限速服務(wù)器等設(shè)備,均需按照列控數(shù)據(jù)表進行配置。通過Entity Framework技術(shù),可以對列控數(shù)據(jù)表進行建模。

3.1 創(chuàng)建實體模型

根據(jù)信號數(shù)據(jù)表,對于每個室外信號設(shè)備,如:應(yīng)答器、信號機、軌道區(qū)段等實體建立模型,本文對每個設(shè)備均創(chuàng)建了一個類。

3.1.1 創(chuàng)建主鍵

為保證數(shù)據(jù)庫中表的完整性,每個表中都須包含一個主鍵,需要在表中某列或多個列的組合上定義一個主鍵(PRIMARY KEY)進行約束。

Code-First 模式下,通過類的屬性變量名稱來定義主鍵:聲明實體模型類時若將某屬性變量命名為ID 或<類名>ID,則該屬性將被定義為主鍵代碼如圖2所示。

圖2 創(chuàng)建主鍵Fig.2 Creating a primary key

3.1.2 創(chuàng)建主外鍵關(guān)系

在Code-First模式下,通過在相關(guān)聯(lián)的類中添加虛屬性來實現(xiàn)主外鍵關(guān)系。例如,本文中的SignalEntity類 和StationEntity類 分 別 表示信號機和車站類別,兩者間存在關(guān)聯(lián),可在SignalEntity類中添加StationEntity虛屬性,從而完成兩者的關(guān)系關(guān)聯(lián),同時在編譯過程中,程序后臺延遲加載數(shù)據(jù),代碼如圖3所示。

圖3 創(chuàng)建主外鍵關(guān)系Fig.3 Creating a relationship of the primary and foreign key

3.2 創(chuàng)建數(shù)據(jù)上下文

為將實體模型映射到數(shù)據(jù)庫中,還需要創(chuàng)建數(shù)據(jù)上下文類:派生自System.Data.Entity.DbContext;本文創(chuàng)建了一個名稱為LineDataModel的數(shù)據(jù)上下文類,并定義了實體集屬性,代碼如圖4所示。

圖4 創(chuàng)建數(shù)據(jù)上下文Fig.4 Creating a data context

3.3 配置數(shù)據(jù)庫連接

使用Code-First開發(fā)模式時,將會在SQL Server Express實例中創(chuàng)建一個與DbContext名稱相同的數(shù)據(jù)庫,并且可以自動連接到這個數(shù)據(jù)庫。

關(guān)系映射就是數(shù)據(jù)庫字段和C#對象屬性的中間橋梁,這種實體框架的核心工作就是通過這個映射生成操作數(shù)據(jù)庫的SQL語句,并調(diào)用ADO.NET,至此,就完成了列控數(shù)據(jù)的EF建模。

4 應(yīng)用前景

基于Entity Framework建模的列控數(shù)據(jù)管理可以應(yīng)用于仿真測試系統(tǒng)、數(shù)據(jù)測試系統(tǒng)、維護終端、計算機聯(lián)鎖、列控中心、無線閉塞中心的配置數(shù)據(jù)生成,按照結(jié)構(gòu)體導(dǎo)出的方式生產(chǎn)嵌入式系統(tǒng)所需的數(shù)據(jù)文件。

同時,也可作為列控數(shù)據(jù)管理技術(shù)平臺的數(shù)據(jù)核心處理,可以依據(jù)相關(guān)規(guī)范,進行數(shù)據(jù)驗證工作。

5 結(jié)束語

基于Entity Framework方法的列控數(shù)據(jù)建模,更加注重業(yè)務(wù)層面,加強了系統(tǒng)開發(fā)邏輯性和可維護性,與先建立數(shù)據(jù)庫再進行編碼的傳統(tǒng)方法相比,在業(yè)務(wù)改變時,不需要對數(shù)據(jù)庫訪問的SQL語言進行大量修改,有效提高了開發(fā)效率。

猜你喜歡
主鍵列控數(shù)據(jù)表
基于Go 實現(xiàn)的分布式主鍵系統(tǒng)研究
列控聯(lián)鎖數(shù)據(jù)管理分析平臺的研究與探索
列控中心驅(qū)采不一致分析及改進方案
湖北省新冠肺炎疫情數(shù)據(jù)表
黨員生活(2020年2期)2020-04-17 09:56:30
便攜式列控中心測試設(shè)備設(shè)計與實現(xiàn)
基于外鍵的E-R圖繪制方法研究
基于列控工程數(shù)據(jù)表建立線路拓撲關(guān)系的研究
列控數(shù)據(jù)管理平臺的開發(fā)
圖表
基于VSL的動態(tài)數(shù)據(jù)表應(yīng)用研究
河南科技(2014年24期)2014-02-27 14:19:25
藁城市| 卓资县| 庆云县| 大庆市| 安康市| 十堰市| 亚东县| 鄂尔多斯市| 阿勒泰市| 新乡市| 班玛县| 旺苍县| 平谷区| 翼城县| 嘉定区| 启东市| 济源市| 荔波县| 潜江市| 寿光市| 邹平县| 嫩江县| 集安市| 铁岭县| 鹤庆县| 监利县| 新河县| 红安县| 宁夏| 高唐县| 黑山县| 巧家县| 清水河县| 江孜县| 娄烦县| 沂源县| 涪陵区| 饶阳县| 东城区| 明星| 莎车县|