999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

EF技術在進銷存管理系統的應用研究

2018-05-02 03:25:46林佳一
計算機時代 2018年3期

林佳一

摘 要: 面對日益龐大且復雜的應用系統,傳統的數據訪問技術存在開發效率低、安全性弱和兼容性差等問題。為了進一步快速構建一個功能強大的系統,Entity Framework數據模型這一新技術應運而生,該技術基于ORM框架,融合了面向對象的思維方式。將EF技術應用在三層架構的進銷存管理系統,程序員可不再拘泥于SQL語句細節,而是重點關注程序邏輯的實現。EF技術的使用大大縮短了開發周期,有助于更有效地使用數據。

關鍵詞: Entity Framework; ORM; 三層架構; SQL

中圖分類號:TP311 文獻標志碼:A 文章編號:1006-8228(2018)03-38-04

Research on the application of EF technology in inventory management system

Lin Jiayi

(GuangDong Communication Polytechnic, Guangzhou, Guangdong 510650, China)

Abstract: Facing the increasingly large and complex application system,traditional data access technology has many problems, such as low development efficiency, weak security and poor compatibility. In order to further build a powerful system quickly, the new technology of Entity Framework data model came into being. This technology is based on the ORM framework, and integrates the object-oriented way of thinking. The application of EF technology in a three-tier architecture of inventory management system, the programmers can no longer get bogged down in the details of SQL statements, but rather focus on the realization of program logic. The application of EF technology greatly shortens the development cycle and helps to use data more effectively.

Key words: Entity Framework; ORM; three-tier architecture; SQL

0 引言

隨著大數據時代的到來,人們普遍關注如何應用信息化的手段高效地管理和使用數據。無論單位規模大小,都建有獨立的信息系統來管理自己重要的數據。在實現這些系統的過程中,數據的訪問技術直接決定著系統使用數據的質量和效率。盡管在設計思想上,從二層結構、三層結構到N層結構的分層開發模式對提高系統的開發速度效果明顯,但在數據訪問方面還有進一步提升的空間。

業界需要一種數據訪問技術,它對用戶而言希望快速有效獲取數據,對開發者而言希望容易掌握。EF技術的出現為滿足這些要求提供了一種新的方案。EF技術是由傳統的數據訪問技術發展而來,是ORM框架的具體實現,解決了關系表到實體類的轉換問題,使程序員從面向對象的角度上操作數據庫。本文通過分析EF技術原理,結合三層架構開發模式,探討了在進銷存管理系統中應用EF技術的方法。

1 相關技術概述

1.1 ORM框架

較長一段時間內,應用系統的程序設計使用的是面向對象技術,而數據庫的設計依然沿用的是面向集合關系模型,因此在開發中程序員需要將關系模型轉換為對象實體以便代碼訪問,這大大加重了程序員的工作負擔。為了讓程序員專注于業務代碼,ORM框架應運而生。ORM(Object Relation Mapping)全稱為對象關系映射。O指編程語言中相應的類,R指關系數據庫中的二維表,M是指關系和對象之間的映射[1]。通過這種映射,ORM框架將關系數據庫中的數據表用類的形式表現出來,這樣程序員只需要通過操作類來操作數據庫而無須再寫復雜的SQL語句。

1.2 EF數據模型

實體框架(Entity Framework)簡稱為EF,是微軟針對其.NET平臺推出的一種基于ORM技術的具體實現方案。自從在Visual Studio 2010中首次使用以來,歷經多年完善,如今已經成為開發數據庫應用程序的相對成熟技術。

EF技術的核心是實體數據模型(Entity Data Model)簡稱為EDM,它由三部分組成,概念層、映射層和存儲層[2]。概念層是抽象的,指應用程序涉及的實體類和關系;存儲層是具體的實現,指數據庫中的表;映射層主要完成數據表和實體對象之間轉換,這種映射是雙向的,它能將數據表轉換成.NET實體對象,也可以將.NET實體對象轉換成數據表。在Visual Studio的項目中使用EF數據模型時,EDM具體的實現形式是一個后綴名為edmx的文件。這是一個用xml的格式描述元數據的文件,其中有三個重要的節點分別描述了概念層、映射層和存儲層。它不僅設置了概念層模型和存儲層模型的基本結構,還配置好了兩者之間的全部映射關系。

EF提供了三種用戶端來訪問EDM,分別是Entity Client、Object Context和LINQ to Entities。無論是哪種用戶端,EDM 中的數據提供者在數據源和用戶端之間傳遞著數據,整個訪問過程本質上都會轉換為SQL語句,SQL語句中所操作的表和字段都來自于對.edmx元數據文件的解析結果,而最后的操作都會交給ADO.NET完成。因此可以認為EF是在ADO.NET的基礎上對數據的操作細節所做的進一步封裝。

根據不同的系統開發場景,使用EF技術時有三種開發方式[3],如圖1所示。第一種方式:模型優先(Model First),首先需要在Visual Studio中創建實體類模型,然后按照EDM中的映射規則,系統自動生成數據庫的表和相關腳本。這種方式適用的情況是開發時還未建好數據庫,或者在開發過程中需要頻繁通過修改實體類模型來更新數據庫;第二種方式是數據庫優先(DataBase First),先創建數據庫,再將數據表轉換為實體類模型,并編寫代碼來訪問將數據表。此方式從搭建數據庫起步,符合傳統的系統開發思維,開發者容易掌握;第三種方式是代碼優先(Code First),開發者先寫實體類代碼,通過創建類的對象,自動將對應的表生成到數據庫中,并可以通過數據庫自動生成實體類模型。該方式比較適合精通面向對象編程而不熟悉數據庫語句的開發者,或者數據庫規模較小。

1.3 三層架構

大部分數據庫應用系統代碼中都包括界面設計程序、邏輯判斷程序和數據訪問程序。如果這些代碼全部混雜在一起,當數據庫系統或用戶界面發生改變時,則需要重新開發整個系統。為了方便系統的修改和重構,無論是部署在C/S(Client/Server)還是B/S(Browser/Server)之上的軟件項目,都廣泛應用了三層架構開發模式。

三層分別指UI層(表示層)、BLL層(業務邏輯層)和DAL層(數據訪問層)[4]。UI層位于最上層,主要是界面的設計;BLL層在UI層和DAL層之間,負責數據處理和傳遞;DAL層功能主要是負責數據庫的訪問。三層各司其職、相互合作完成系統功能。三層之間傳遞數據顯然不能直接是數據表,而是面向對象程序設計語言中的實體類表示,于是,需要將表中的數據轉換成一個實體類的對象的集合。

2 在系統中使用EF技術的原因

目前,在基于.NET平臺上的WinForm、Asp.Net、Asp.Net MVC、WCF等各種應用程序中都廣泛采用了EF技術。EF技術之所以備受關注并成為數據訪問領域的主流,主要原因如下:

⑴ 能與多種數據庫管理系統無縫整合,有利于系統的更新和擴展

EF作為一個輕量級的數據訪問框架不僅應用于SQL Server數據庫,還可以支持Oracle、MySQL和 SQLite等各種的數據庫。雖然這些數據庫的SQL語句存在一定的差異,但對于使用了EF技術的應用程序而言,通過EDM的映射,在訪問數據庫的操作中屏蔽了這些不一致,這樣使得更換數據庫系統變得更加靈活。

⑵ EF技術與三層架構中的實體類相互融合,減少了數據傳遞的代碼量

在三層架構的應用程序中,三層之間通過實體類來傳遞數據,實體類的一個對象對應二維表里的一行數據,實體類的每個屬性對應表中的相應字段。EF中所用到的實體模型和關系數據庫表是一一對應,相互之間形成映射。

⑶ 符合面向對象的思維方式,易于程序員學習和使用

EF技術讓程序員直接用面向對象的編程方式來操作數據,而不必拘泥于低層訪問數據庫代碼的細節。EF語法結合了LINQ代碼或lambda表達式,因此代碼非常簡潔,開發人員容易掌握。這些高度封裝的代碼最終由系統自動轉換為SQL語句。比如,對那些涉及多個表的操作,在EF中不用象在數據庫中那樣做聯表,而直接用導航屬性。EF中edmx元數據文件會讀取數據庫中的關系,然后根據表的主外鍵關系生成導航屬性。

⑷ 避免直接使用SQL語句,可以提高系統的安全性

EF技術除了用.NET支持的語言完成有關數據庫的增加、刪除、修改和查詢操作,還能很好地支持存儲過程,有效地防止SQL注入式攻擊,大大提高了應用程序的安全性。

3 EF技術在進銷存管理系統的應用

隨著系統規模越來越龐大,功能越來越復雜,軟件項目開發需要很多人分工合作,三層架構在系統開發中日益凸顯著重要作用。同時,針對三層架構中的每一層的實現各自也有很多的方案,尤其是對DAL層,

.NET平臺的實現方法諸如ADO.NET,LINQ和EF等。EF作為微軟當前最新數據存取技術,將其運用在項目中可以極大地發揮三層架構和EF各自的優勢。下面以進銷存管理系統為例,具體介紹EF技術在三層架構系統中的應用。該系統使用Visual Studio 2012和SQL Server2012,采用了數據庫優先的開發方式。

3.1 系統設計

⑴ 功能分析

該進銷存管理系統基于C/S體系結構,用于小型商業企業日常經營業務[5]。主要包括六大功能模塊。①用戶管理,分為系統用戶和普通用戶;②基本信息管理,包括商品、供應商、客戶和倉庫信息的錄入、修改、刪除和查詢;③進貨管理,入庫單信息編輯;④銷售管理,銷售單信息的編輯;⑤庫存信息的管理,庫存的查詢和統計、庫存上下限預警;⑥決策分析,產品的銷量和庫存排行與分析。

⑵ 搭建系統三層架構

按照分層的思想,在VS中構建系統的三層架構。首先新建“JXC”空白解決方案,在方案中添加“JXC”WIN窗體應用程序項目、“JXCBLL”和“JXCDAL”類庫項目,它們分別表示UI層、BLL層和DAL層。三層之間傳遞的數據放在實體類組成的“MODEL”實體層中。UI層直接和用戶打交道,主要實現顯示系統的主菜單、銷售信息編輯等核心功能界面及界面之間的跳轉。BLL層原本是實現諸如登錄、銷售統計等業務的復雜邏輯,但這里只是通過對DAL層的方法調用來實現任務,僅起到傳遞和響應請求的作用。DAL層中實現了處理的各個實體類的方法。

3.2 實現EF數據訪問

⑴ 創建EF實體數據模型

在“MODEL”實體層項目中添加一個ADO.NET實體數據模型項,由于已經有“jxc”數據庫,選擇“從數據庫生成”的方式,系統自動創建了jxc.edmx文件。jxc.edmx元數據文件保存了“jxc”數據庫、實體類和映射關系的相關信息。與以前ADO.NET三層架構系統不同,EF會自動產生與數據庫中各個表所對應的實體類。同時,還創建了數據庫上下文類文件jxc.Context.cs,該文件中有一個jxcEntities類,對應于要訪問“jxc”數據庫,該類中為每個實體類定義了一個相關的實例屬性,屬性的類型是DbSet

⑵ DAL層使用EF實體數據模型

通常實體類會被系統的各層使用。在EF中通過jxcEntities對象的屬性來訪問要操作的表,如果要操作sell表就要操作對應的sell屬性。數據的訪問操作代碼都封裝在DAL層,而此時EF自動產生的類在實體層,于是需要將實體層使用的EntityFramework程序集引入到DAL層,這樣才能在DAL層使用DbSet的各種方法,同時由EF自動轉換成SQL代碼完成對數據庫的操作。

3.3 ef關鍵代碼分析

UI層接收到用戶請求,UI層調用BLL層的方法進行處理,其中需要操作數據庫的部分是由BLL層調用DAL層的方法完成。整個系統中最重要和最低層的代碼在DAL層。DAL層中把每個實體類相關的增加、刪除、修改和查詢的方法封裝在各自的類中。由于這些操作方法中間的邏輯代碼基本一致,只是處理的實體對象不同,因此,在DAL層抽象出一個DBDal泛型類,這個類的功能和基于ADO.NET三層系統中的SQLHelper通用數據操作類的功能相似,主要包括對基本增加、刪除、修改和查詢方法,此時方法并沒有確定針對哪個具體實體對象,DBDal泛型類部分代碼如下所示。

public class DBDal where TEntity:class

{

jxcEntities db=new jxcEntities();

DbSet ds=db.Set();

//條件查詢

public IQueryable Find(Expression> conditon)

{

return ds.Where(conditon);

}

//增加

public void Add(TEntity entity)

{

ds.Add(entity);

db.SaveChanges();

}

}

當對某個實體類操作時,需要定義一個子類繼承DBDal泛型類。比如對應銷售表的sell實體類操作的類為GoodsDAL: DBDal 。此時,不需要再在GoodsDAL類中定義基本操作方法,因為直接可以從父類DBDal中繼承獲得。在繼承DBDal 時確定了泛型類型,意味著方法操作的是sell實體類對象,經過EF的模型映射后轉換為用SQL語句操作數據庫中的sell表。

3.4 注意的問題

雖然使用EF減輕了編程的工作量,且降低了代碼出錯率,但在應用過程中有一些問題值得注意。第一,程序員往往需要修改從數據庫自動生成的實體類,此時不要在.cs文件中修改,而要修改tt模板,因為只要保存edmx文件,.cs文件就會回到未修改狀態;第二,EF模型在DAL層實現時,數據庫的連接字符等配置保存在App.config文件中,而應用程序首先啟動是UI層項目,因此要將三個節點拷貝到UI層項目的App.config文件中;第三,EF訪問數據庫的實質是調用了IQueryable中的擴展方法,自動將這些方法轉換成SQL語句,EF程序易寫但執行效率較差,可以先在EF上下文中完成操作,再保存到數據庫,以獲得更優的性能。

4 結束語

在基于三層架構的進銷存管理系統中,使用EF技術,使得程序結構更加清晰,不僅節省了項目的開發成本,而且縮短了開發周期。在當前信息化時代背景下,EF技術將會廣泛應用于系統開發中。但是EF技術也存在一些不足之處, EF的模式化編程方式往往束縛了它解決特殊問題的能力,當面對復雜的業務邏輯時,開發者最終還是得使用SQL語句來實現功能。另外,還會出現系統運行速度較慢和無法保證數據的有效性等問題。因此,今后EF技術在性能優化、事務處理和安全性方面還有待進一步完善。

參考文獻(References):

[1] 高起躍.基于ASP_NETMVC和實體框架的農業論壇的設計

與實現[D].遼寧科技大學碩士學位論文,2014.6.

[2] 謝日星.EntityFramework技術在分層架構中的應用研究[J].

電腦知識與技術,2011.7(14):3326-3327

[3] 龔蘭蘭.基于ASP.net MVC的智能名片后臺系統的設計與

實現[J].蘇州市職業大學學報,2017.28(1):5-9

[4] 何福南,湯曉燕.C#程序設計項目化教程[M].電子工業出版

社,2014.

[5] 明日科技.C#項目開發案例全程實錄(第2版)[M].清華大學

出版社,2011.

主站蜘蛛池模板: 孕妇高潮太爽了在线观看免费| 国产JIZzJIzz视频全部免费| www.国产福利| 在线观看国产精品第一区免费 | 亚洲综合片| 精品国产香蕉在线播出| 亚洲一级毛片| 波多野结衣第一页| 国产黄色片在线看| 婷婷在线网站| 亚洲欧美日韩精品专区| 亚洲欧美国产视频| 四虎AV麻豆| 欧美人与牲动交a欧美精品| 无码又爽又刺激的高潮视频| 日韩色图区| 欧美日韩资源| 性欧美精品xxxx| 狠狠干欧美| 国产性猛交XXXX免费看| 国产乱论视频| 国产喷水视频| 国产一区二区免费播放| 亚洲妓女综合网995久久 | 露脸国产精品自产在线播| 午夜高清国产拍精品| 国产内射在线观看| 中文国产成人久久精品小说| 日本日韩欧美| 国产经典免费播放视频| 中文字幕在线免费看| 成人伊人色一区二区三区| 日韩精品高清自在线| 国产成人三级| 婷婷亚洲天堂| 波多野结衣的av一区二区三区| 免费国产高清视频| 亚洲大尺度在线| 狠狠色成人综合首页| 日韩欧美国产精品| 亚洲综合九九| 亚洲欧美人成电影在线观看| 久久综合伊人77777| 精品久久高清| 午夜国产精品视频| 日韩欧美色综合| 天天视频在线91频| 成人精品午夜福利在线播放| 国产欧美日韩另类| 四虎成人免费毛片| 国产成年女人特黄特色毛片免| 国产大片黄在线观看| 熟妇无码人妻| 国产av无码日韩av无码网站| 国产亚洲欧美在线中文bt天堂| 亚洲精品中文字幕无乱码| 欧美激情一区二区三区成人| 久久美女精品| 精品视频一区二区观看| 国产女人18毛片水真多1| 中国国产A一级毛片| 激情六月丁香婷婷| 日韩欧美中文字幕在线精品| 又黄又爽视频好爽视频| 老司国产精品视频91| 国产成人精品一区二区三区| 色综合久久88色综合天天提莫 | 免费国产无遮挡又黄又爽| 亚洲色图欧美视频| 91精品久久久无码中文字幕vr| 91啪在线| 在线国产资源| 亚洲国产清纯| 少妇人妻无码首页| 91麻豆精品视频| 国产麻豆永久视频| 波多野结衣亚洲一区| WWW丫丫国产成人精品| 亚洲国产日韩欧美在线| 免费女人18毛片a级毛片视频| 一级片一区| 精品免费在线视频|