文档介绍:该【2025年IStartupTask连接数据库的方法(锦集3篇) 】是由【圭圭】上传分享,文档一共【16】页,该文档可以免费在线阅读,需要了解更多关于【2025年IStartupTask连接数据库的方法(锦集3篇) 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。
2025年IStartupTask连接数据库的方法(锦集3篇)
篇1:IStartupTask连接数据库的方法
系统启动时执行任务:IStartupTask,启动时执行的任务主要是数据库的初始化和加载。
IStartupTask调用IEfDataProvider进行数据库的初始化。
IEfDataProvider,SqlCeDataProvider:获取数据连接工厂,不同类型数据库,连接工厂不同。
接口IStartupTask的实体类EfStartUpTask的实现如下:
public class EfStartUpTask : IStartupTask { public void Execute { var settings = (); if (settings != null && ()) { var provider = (); if (provider == null) throw new NopException(“No EfDataProvider found”); (); } } public int Order { //ensure that this task is run first get { return -1000; } } }
SqlCeInitializer,CreateCeDatabaseIfNotExists初始化数据库。
IDbContext,NopObjectContext系统数据库操作上下文。加载所有数据库映射类:EntityTypeConfiguration。代码如下:
protected override void OnModelCreating(DbModelBuilder modelBuilder) { //dynamically load all configuration // configType = typeof(LanguageMap); //any of your configuration classes here //var typesToRegister = (configType).GetTypes() var typesToRegister = ().GetTypes() .Where(type =>!()) .Where(type => != null && && () == typeof(EntityTypeConfiguration)); foreach (var type in typesToRegister) { dynamic configurationInstance = (type); (configurationInstance); } //...or do it manually below. For example, //(new LanguageMap()); (modelBuilder); }
此方法是继承自DbContext。并在系统启动时调用,建立数据表与实体的对应关系。
、数据库的加载。如下代码:
//data layer var dataSettingsManager = new DataSettingsManager(); var dataProviderSettings = (); (c =>()).As(); (x =>new EfDataProviderManager(())).As().InstancePerDependency(); (x =>(IEfDataProvider)().LoadDataProvider()).As().InstancePerDependency(); (x =>(IEfDataProvider)().LoadDataProvider()).As().InstancePerDependency(); if (dataProviderSettings != null && ()) { var efDataProviderManager = new EfDataProviderManager(()); var dataProvider = (IEfDataProvider)(); (); (c =>new NopObjectContext()).InstancePerHttpRequest(); } else { (c =>new NopObjectContext(().DataConnectionString)).InstancePerHttpRequest(); } (typeof(EfRepository)).As(typeof(IRepository)).InstancePerHttpRequest();
接口IEfDataProvider 的实体类SqlServerDataProvider的数据库初始化方法如下:
///
/// Set database initializer /// public override void SetDatabaseInitializer() { //pass some table names to ensure that we have nopCommerce installed var tablesToValidate = new[] {“Customer”, “Discount”, “Order”, “Product”, “ShoppingCartItem”}; //custom commands (stored proedures, indexes) var customCommands = new List
(); //use instead of which is not available in unit tests (ParseCommands((“~/App_Data/”), false)); //use instead of which is not available in unit tests (ParseCommands((“~/App_Data/”), false)); var initializer = new CreateTablesIfNotExist(tablesToValidate, ()); (initializer); } 另外,EntityFramework本事是ORM框架,通过数据库访问上下文建立与数据库的连接及实体与数据表的对应广西。并通过创建IRepository的泛型实体类来实现对每一种数据的处理,也就是所谓的Dao层。业务逻辑层通过每种实体的数据访问仓库Repository来进行数据库操作。
[IStartupTask连接数据库的方法]
篇2:一种逻辑层次连接的工程数据库设计方法及应用
1 引言
工程数据库系统和传统数据库系统一样, 程数据库设计的主要任务是在工程数据库管理系统的支持下,按照应用的要求,为某一类或某个工程项目 设计一个结构合理、使用方便、,可以使整个应用 系统效率高、维护简单、, 讨论,阐述了工程数据库设计的基本概念和内容,以及工程应用领域中数据库设计的一些特性,介绍了一 种以层次分析为主,以连接关系为基础, 结合面向对象技术来进行工程数据库设计的方法及其应用.
2 工程数据库设计的特点
所谓工程数据库设计,是指从工程应用需要出发, 过程是:首先要对工程应用领域的数据进行需求分析, 工程数据库管理系统的,,再根据实际情况进行数据 库的具体设计
对作为集成化CAD/CAM系统基础的工程数据库系统的设计,在吸取常规的设计思想同时 ,还要充分考虑与工程设计环境相关的一些特点,要适应工程数据处理的需要[1]
. 工程数据库的 设计目标
工程数据库设计要达到的基本目标是要有效的为集成化应用提供所需要的工程数据,并且使 ,概念设计的目标就是通过对应用系统的信息需求进行描述和综 合,从概念上模拟工程应用的信息结构,、冗余度 低、数据一致性和完整性好等特点的逻辑数据结构,能满足并最小覆盖工程应用的数据需求;能被工程数 ,以及与系统软件、硬 件及其分布情况有关的实现细节的设计.
注重设计方法的实用性
为了提高系统资源的利用率,简 化软件设计和数据的转换工作,避免系统开发中人力、物力、财力上的浪费,提高系统的生产率,就要考 虑到设计系统的实用性
通常数据库设计方法学的理论研究大都着重于一般性,而工程数据库设计的 ,一方面以满足用户需求作为设计的出发点和归宿,将信息需 求贯穿到数据库设计的全过程之中;另一方面,在对数据抽象程度、概念模型级别、数据模式类型以及设 计工具等方面,要根据设计环境和目标,着重其实际效果来进行选择和确定
. 工程设计过程中的一些 特点
层次结构
设计人员开始工程项目或产品的设计时,对设计的产品或项目一层一层的将它们 分解,将一个复杂的问题,分成若干个简单问题,,也是一种以层次 为主的分析设计过程:商场可以分为楼层(又称店堂),在楼层店堂中常包含若干小区,小区又由配套和构 ,层次结构化分析是问题求解的基本点
逻辑层次结构
随着分层的深入, 不完全一致的,有的深有的浅,所以在这种层次结构中,上层除了可以调用直接的下一层外,还可以调用 其它下层的内容,但是下层结构不允许调用上层,这样的层次结构称之为逻辑层次结构
自顶向下与 自底向上相结合的设计方法
在设计过程中, 分解完善,到最后才能取得较好的效果, ,在逻辑分析阶段中运用了自顶向下的设计方法;而具 体设计阶段又采用了自底向上的设计方法
基于工程设计过程中的这些特点,在进行工程数据库设计 时,要充分发挥和利用这些特点,使工程数据库的设计过程能够与这些特点密切配合,工程数据库的设计 应包含:需求分析、工程数据库的划分、概念设计、 思想是层次分析的方法.
3 逻辑层次连接的工程数据库设计过程
设计一个工程数据库,要考虑工程过程中的一些因素;为了确保工程数据库设计的优良性,还应遵循 .
需求分析
在任何 设计中,首要的任务是完成详尽的需求分析,
.充分 了解集成系统中各有关数据项
计时,只有充分的了解集成化系统中各应用软件对共享数据的要求,才可能对工程数据库的设计做到比较 全面合理
要了解各应用系统对共享数据的操作
工程数据库不仅要存储被应用系统处理过的数据 信息,同时还要为应用系统提供被处理的数据, 出来的工程数据才会方便于应用系统的使用,提高应用系统的处理效率.
具有一定的可扩充能力
设计的工程数据库,不仅要满足当前的需要,而且还要考虑到今后的发展,如扩充应用系统或增加应用系 统的处理功能,以适应工程应用中集成化、网络化、开放计算等发展的需要.
库的划分
在需求分 析的基础上,要对工程数据库进行划分,工程数据库要能对各种不同应用系统中的数据交换、接口等进行 ,以及提高集成系统的工作效率,方便各应用系统对数据的处理,就 需要根据工程过程中的特点对工程数据库进行必要的划分,将一个大系统进行分解,使一个大的工程数据 库系统分成若干个小一点的工程数据库
在集成化的CAD/CAM等系统中,通常有这样三类设计数据:系 统公用的共享数据;为子系统所共享的项目数据; 计过程中,分别将它们聚集一起,,将数据库划分成 器件库、物理参数库、,提高了设计数据的一致性,方便了统 一管理,也减少了数据的冗余[2].在商场CAD系统的工程数据库设计中,将其分成了图象库(保存具有典 型风格的设计图象)、构件库(构件资料)、材料库、样板库、 库(一个样板库未压缩数据达200MB)后各个数据库任务明确,易于管理和理解
库划分好后,要对每个 ,范围缩小了,而且各库均有一定的物理意义,与某个或某些应用相关,可作 为一个独立的环境而分别处理;不仅有利于工程数据库的设计,同时对分布式环境下的工程数据处理提供 了一种方法和手段.
概念设计
概念设计要进一步细化库的结构,使其能满足应用系统的功能和数 ,采用了层次分析为主,,数据结构是三 维的,除了有数据表外增加了表明层次的内容;上一层数据可展开成更详细的下一层的数据;这样可以方 便地实现系统需要哪一层的数据,,按店堂、小区、配套、构 件等层次构成了一个工程数据库系统;在此数据库中可以方便的提取店堂、小区、配套、构件直至整个商 场的任何一层的有关数据(如造价数据).
另外在概念设计阶段还将每个库视为由对象、层次结构、链 , 一些基本概念:
定义1. 层次对象(Object).、店堂、小区、构 ,并包含一定的关系和内容
在层次 对象之间,存在着某种关系, ,在某一层(店堂)中交叉分布着男士服装、女士服装以及儿童服装等 、连接、.
定义2. 关系(Relation).关系表示2个对象间的相互依赖,它由一对连接组成,其中一个连接的源对象 (hd)可以用于化装品小区(hzpxq),也可用于烟酒小区(yjxq),其关 系可以表示为(hd,hzpxq)和(hd,yjxq).
定义3. 节点(Node).节点是一种实体对象,一个节点由具有 、化装品小区、烟酒小区等都被视为一个具体的节点
根据处理的不同,进一步将节点分成两类,一类是中间节点, 属层次,,已经分到了原子对象,, 节点层为构件层,其它层次均视为中间层次
在工程过程中,某对象所包含的层次数目可能是不等的 ,,虚节点是为了保证对象具有同样的层次深度,这 些节点只起逻辑上的作用,(层Layer, 层次对象 Object, 关系Relation); 而层次对象又由节点和关系构成,即层次对象Object(节点Node, 关系 Relation)等
. 逻辑设计
逻辑设计是将概念设计所产生的与具体工程数据库管理系统无关的数据 模式, [3—5],讨论工程数据库的逻辑设计.
1) 将概念模 式中的层转换为EDBMS的表
,将概念模型 中的每一层作为一个数据表;对于叶节点层由于其依附的关系不同,可分别转换为多个数据表.
2) 转 换实体对象为记录
在EDBMS中,由于它是一种面向记录的模式;对扩展层次模式中的各个实体,均将 其转换为数据记录,用记录来表示实体
3) 用连接来表示扩展层次模式中的联系
为了保证扩展层 ——Link族语句,该族语 句可以在库与库、表与表、表与记录、记录与记录之间建立一对一、一对多、 将复杂的联系进行了描述和处理.
物理设计
物理设计的任务是选择合适的存储结构和存取路径, 设计的主要目标是:提高数据库的性能,尤其要满足应用系统的性能要求;此外还要提高存储空间的利用 率[3]
在EDBMS的物理设计中, EDBMS的特点,如Link语句所提供的在复杂对象间建立联系,通过它可以快速的提取指定的数据,而无需 进行数据的查找,[5],将一 个库的多个表或多条记录一次加载到内存中,从而减少了读盘的次数,提高了效率.