上海网站建设联系方式,兰州迅豹网络怎么样,沈阳招标信息网官网,手机自助建站免费建站平台在EMStudio中静态建模的概念和内容是来自于UML标准的#xff0c;所以EMStudio提供的静态建模的设计能力是完全可以满足开发者的设计要求的。但是与UML标准比较#xff0c;EMStudio中的静态建模还存在两个不同的特色#xff1a; 1. 类与实体的概念是一致的 也就是说#xff…在EMStudio中静态建模的概念和内容是来自于UML标准的所以EMStudio提供的静态建模的设计能力是完全可以满足开发者的设计要求的。但是与UML标准比较EMStudio中的静态建模还存在两个不同的特色 1. 类与实体的概念是一致的 也就是说在EMStudio的静态建模中类和实体是完全相同的两个概念。这与目前大部分的书籍和资料的表述是不同的。EMStudio这么做是因为定位问题同时也给开发者提供了完成静态建模即完成数据库设计的便利。 2. 静态建模和数据库设计高度统一 在EMStudio中静态模型的设计和数据库的设计是完全结合在一起的开发者完全可以通过静态建模一个步骤完成两种设计工作。另一个高度结合的体出现在与实体的继承特性在数据库设计过程中也得到充分和完善的体现。所以开发者实际上是用面向对象的方法完成数据库设计的。 下面开始具体介绍EMStudio的静态建模部分的内容。 一创建工程及实体 1.创建新工程 首先运行EMStudio主界面显示后从主菜单选择FileàNew Project完成新工程的创建工程的默认名字是“MyProject”。在实体模型视图Entity Model中会显示新建的工程如下图所示 2.定义新实体 下面开始定义一个新的实体。鼠标右击工程节点在弹出菜单中选择New—Simple Entity完成一个简单实体的定义。完成操作后实体模型视图会显示新的实体其位置是作为工程节点的子节点如下图所示 展开实体Entity1节点可以看到实体包含的内容索引成员等同于字段关系和触发器。这个一个实体和数据表应该有的一些内容。 二实体设计器的使用 双击实体节点Entity1可以打开实体设计器在实体设计器中可以完成与实体有关的绝大部分设计和编辑工作。双击后显示界面如下 实体设计器通过不同Tab页来组织实体包含的不同内容。在当前显示的属性页中可以编辑实体自身的属性。我们可以将实体的名字改为一个更有实际意义的名字。点击Name属性然后输入“Company”按回车。这样就完成了实体名字的修改。可以观察一下此时实体模型视图中的实体名字也显示为“Company”。其它属性介绍如下 Comment 是对实体的说明性文字 Entity Type 实体类型。由于我们创建的是简单实体所以这里显示的Simple。这个属性是不可修改的。另外两个类型是组合Comb和关系Relation这两种类型的实体会在后续的章节中介绍。现在先了解简单实体的内容。 IsAbstract 用于指定当前的实体是否为抽象的。 IsAECC 表示当前实体是否为一个容器实体该属性不可修改。关于容器实体我们也是在后续相关章节中再介绍。 好现在点击Member页切换到实体成员的设计界面然后点击Add按钮定义一个新的实体。操作完成后界面如下图所示 点击Name属性输入“CompanyName”按回车完成成员的名称修改操作。 除了关系和实体属性以外成员索引和触发器的定义和修改都是使用相同的操作方式完成的。如果要删除那么先选中需要删除的项然后点击Delete按钮就可以了。这里需要注意一个成员属性那就是“Mapping Field”属性。这个属性表示当前的成员是否对应于数据表中的一个字段。如果选择是那么在生成数据库时数据表中就会有这个字段否则就没有EMLib框架在完成各种ORM功能时也不会处理这个成员。 读者可以切换到索引页和触发器页定义新的索引和触发器看一下其中内容。读者可以发现索引和触发器的内容和Sql数据库是一致。这是因为新创建的工程默认是使用Sql数据库的。如果需要修改的话选择主菜单ProjectàSetting在设置界面中修改。这个操作会在后续内容中介绍。现在选择主菜单FileàSave完成工程的保存操作因为后续的介绍需要使用到这个工程。 三创建实体图和关系 1.创建实体图 鼠标右击工程节点在弹出菜单中选择NewàEntity Diagram菜单项完成实体图的创建。操作完成后实体模型实体中会出现新的实体图节点如下图所示 鼠标右击实体图节点在弹出菜单中选择Property菜单项。在实体图的属性编辑界面中将实体图的名字修改为Main然后按OK按钮返回完成实体图的改名操作。 2.定义新关系 双击实体图节点Main打开实体图在主窗体的客户区就会显示实体图的内容。当然现在显示的实体图还没有任何内容。用鼠标在实体模型视图中选中Company实体节点然后以Drag/Drop方式将该实体放置到在客户区打开的实体图中Drop的位置请靠近左上角以方便后面的操作。操作完成后的结果如下图所示 由于关系存在于两个实体之间当然自反关系是一个例外所以我们还需要定义一个新的实体。在实体图工具条上选中简单实体按钮如下图所示 在实体图中的空白处按下鼠标左键然后以Drag/Drop方式向右下方向拉出一个方框再释放鼠标左键。这样就完成了一个新实体的定义如下图所示 请将该实体的名字改为Employee。现在就可以开始定义新的关系了选择实体图工具条中的Composition按钮如下图所示 然后将鼠标键移动到Employee实体上按下鼠标左键以Drag方式将鼠标移动到Company实体上然后释放鼠标左键这样就完成了一条新关系的定义。如下图所示 3. 修改关系的名称 在实体图中鼠标右击关系在弹出菜单中选择Property菜单项打开关系编辑界面。然后选择Name属性将名字改为HasEmployee。 四关系的属性 在开始介绍关系属性之前先明确关系主方和付方的概念。从图形上来说关系箭头所指方是关系的主方而另一方就是关系的付方。对于刚才创建的关系来说Company实体是主方Employee实体是付方这表示Company实体包含1个或者多个Employee实体。关系的名称修改完成后请展开关系属性界面中所有节点如下图所示 下面开始逐个介绍关系的属性这部分的内容很重要因为静态模型的精华是在于关系。 Comment 对关系的说明 Enable Navigate Primary 在UML标准中关系的双方对对方的知晓ware往往是单向的。双向知晓会在源代码中出现互相引用的情况这是高耦合的一个标志。所以通常的情况下这个属性一般是设置为false。但是在某些情况确实会需要互相知晓对方的情况。比如树形控件中的父节点有子节点属性从而父节点可以知道所有的子节点同时子节点有一个父节点属性从而子节点可以知道父节点。这个时候我们就可以将该属性设置为true。 这个属性的值也会影响到EMLib的ORM操作。如果设置为true那么在级联的实体激活操作中EMLib不仅会激活实体以及付方实体并且还会根据该属性值激活或者初始化付方实体中表示主方实体的属性。从而让付方实体可以访问到或者说感知到主方实体。 Foreign Key Options 这部分是与外键相关的属性。在EMStudio的静态模型中实体间关系会以外键的方式映射到相关的数据表中。所以这个部分属性允许开发者设置外键的属性。 Foreign Key Options—Name 这个属性用于设置外键字段的名称。这是目前开发者能够修改的唯一属性。外键的类型属性是不允许修改的EMStudio会根据当前所使用的数据库自动确定。 Minor Entity Name 付方实体的名称在创建关系时确定无法修改。 Minor Multiplicity 表示付方实体的数量“1”和“0..1”表示单“0..*”和“1..*”表示多。这和UML标准是一致的含义也没有变化。 Minor Options 这部分的属性用于设置付方实体的内容。 Minor Options—Active EMLib使用这个属性确定在执行级联的激活操作中是否激活这个关系的付方实体。设置为true表示需要在级联激活中激活付方实体false表示不激活。请将其改为true。 Minor Options—Delete EMLib使用这个属性确定在执行级联的删除操作中是否删除这个关系的付方实体。设置为true表示需要在级联删除中删除付方实体false表示不删除。 Minor Options—Property Name 关系在源代码中是通过属性来体现的在EMStudio的静态模型中这样的属性称为关系属性。关系属性出现在主方实体中表示主方知道付方存在并可以访问。这个属性用于设置源代码中关系属性的名称。为了在生成的源代码中看到效果请将其改为HasEmployee。 Primary Multiplicity 表示主方实体的数量“1”和“0..1”表示单“0..*”和“1..*”表示多。这和UML标准是一致的含义也没有变化。 Primary Entity Name 主方实体的名称在创建关系时确定无法修改。 Relation Type 关系的类型在创建关系时确定无法修改。 最后介绍一下Enable Navigate Primary属性请将其值改为true然后就会出现一个新的属性Primary Options。Enable Navigate Primary属性的值设置为true以后表示付方实体需要感知主方实体这在源代码中也是通过属性来实现的这和上文提到的树形控件的作法类似。Primary Options中的属性就允许开发者设置该属性的名称。请关闭实体设计器界面返回主界面然后保存工程。 五编译工程及生成源代码 1.设置源代码输出目录 在生成源代码前先确认一下源代码输出的位置。请选择主菜单ProjectàSetting菜单项打开设置项目界面如下图所示 窗体中最下面那个Output Path设置项就是定义源代码的输出路径。默认是在C盘由于在笔者的电脑上可以使用这个目录所以笔者就没有修改。请读者确认在自己电脑上运行EMStudio时EMStudio对指定目录拥有写的权限。 2.编译工程 这一步不是必须的因为直接生成源代码话EMStudio也会自动先执行编译没有错误以后才会生成源代码。请选择主菜单ProjectàCompile菜单项执行编译操作。如果读者是严格按照上述步骤做下来的话应该是通不过编译的会产生如下的两个错误 第一个错误是说实体Employee没有任何成员。请双击该错误打开实体Employee的设计界面然后为实体Employee定义一个新的成员名字是MyBirthday类型是DateTime。 第二个错误是说连接字符串无效。请双击该错误打开设置项目界面如前图所示。现在读者有两个选择其一是点击“New Connection”按钮新建一个真实的连接从而得到一个连接字符串。其二是在“Connection String”文本框中输入任意非空非空格的有效字符串比如“abc”之类的就可以。为简便起见现在先输入“abc”。 好保存工程再次执行编译操作这是就应该可以成功通过编译了。在输出窗口可以看到成功信息如下图所示 3. 生成源代码 选择主菜单ProjectàBuild Source生成源代码。请确认在设定的源代码输出位置生成了源代码文件。 六源代码解读 在指定的源代码输出目录中会存在一个名为MyProject文件夹。这个名称来自于项目的工程名。请打开该文件夹会有一个名为C#的文件夹这表示我们生成的是C#语言的源代码。源代码的语言类别在设置项目界面中是可以修改的。请打开该目录会看到如下所示的目录如下图所示 EDModel.Biz.EDCustom文件夹中文件是以实体类为单位的一个实体对应一个文件开发者如果需要写自己定制的代码可以写在这些文件中。在将代码添加到自己的项目中时请使用复制的方式添加这样重复生成代码时自己写的代码就不会被覆盖。EDModel.Biz.EDExtern文件夹中两个文件。MyProject.xml称作模型文件在初始化EMLib框架时需要这个文件。另一个是EDModel.cs文件该文件体现了当前实体模型的静态结构。所以将该文件添加到工程时请使用引用添加这样重复生成源代码后可以保证当前工程中是最新的代码。开发者不能修改该文件中的代码否则会导致EMLib框架无法正常使用。 现在打开EDModel.cs文件看一下其中的内容。首先看命名空间namespace MyNamespace这个名字是可以修改的在主菜单ProjectàSetting菜单项打开项目设置窗体然后在其中编辑Namespace就可以了。MyContext这个类是用于初始化EMLib和生成EMContext对象的类以后在介绍Eql是会提到它。这个类的名字可以在项目设置界面的Context Class Name中修改。 在MyContext类后面是若干个继承自EqlEntityMeta的类这些类称为数据表元类。数据表元类中的成员和数据表中的字段是对应的并且在MyContext类中会有每一个元类的成员。这样的设计是为了方便Eql的使用。如何使用Eql会在其它相关部分中再做介绍。接着元类的就是实体类了。请读者确认一下每一个实体类的成员是否和设计时定义的是一致的。由于我们定义了一个关系所以在主方实体Company中会有关系属性HasEmployee这个名字和设计时指定的是一致的。另外由于我们指定关系的Enable Navigate Primary属性为true表示付方实体可以感知主方实体所以在付方实体Employee中存在关系属性Host_Relation9这个属性表示付方实体对应的主方实体。 在项目设置中的Entity Model设置页有一个选项Serializable这个设置项用于控制是否在生成的源代码中给实体类加入Serializable属性。 七与模型相关其他一些操作 1.删除操作 在EMStudio中删除操作有两种从模型中删除和从实体图中删除。请打开实体图然后鼠标右击实体Employee在弹出菜单中选择DeleteàDelete From Diagram菜单项。可以看到实体Employee从实体图中消失了但是在实体模型视图中Employee实体还是存在的。这个意思是刚才操作只是从实体图中删除了一个表示实体的图形符号而不是实体本身。现在选择主菜单EditàUndo菜单项或者快捷键CTRLZ执行Undo操作可以看到图形又恢复了。然后再次在实体图中右击Employee实体图形在弹出菜单中选择菜单DeleteàDelete From Model菜单项。可以看到Employee实体从实体图和实体模型视图中都消失了。这表示实体Employee实体被真正的从模型中完全删除了模型中已经不存在Employee这个实体了。 2.包的使用 在EMStudio中包是一种用来组织模型的工具。在实体模型视图中用鼠标右击工程节点在弹出菜单中选择NewàPackage菜单项就可以定义一个新的包了。EMStudio中包的含义和UML中一致。通过右击包节点开发者可以在包内定义其它内容。 3.查找 EMStudio中查找分两种查找和引用查找。所谓查找是一般意义上的查找引用查找是指查找一个实体在当前的实体模型中在那些地方被引用到。先介绍查找。选择主菜单EditàFind菜单项打开查找界面。如下图所示 在Find what文本框中输入Com在Search in组合框中选择Project在Search types中只选择EntityMatch case和Match whole word复选框不要选上然后点击Find按钮。在Find Results视图中就会显示查找结果如下图所示 这个结果表示实体Company在静态模型中存在于两个位置一个是在模型MyProject的Main实体图中另一个是在模型MyProject中。请双击第一个查找结果实体图会被自动打开并且实体Company在实体图中是被选中的。 在实体Employee中定义一个新的成员名字是PreviousCompany类型是Company类型。然后在实体模型视图中右击实体Company在弹出菜单中选择Find All References菜单项就会查找实体Company所有被使用到的地方结果如下图所示 结果表示实体Company在当前的静态模型中在两个不同位置被使用到。读者可以双击这两个结果实体Company被使用到的地方会自动打开。 本节内容到此已全部讲述完毕如果有疑问或者需要技术支持可以访问我们网站http://www.WideUnion.com。提出您的问题或者在论坛中提交问题同时我们也非常希望能听到您的建议和需求以便我们为您提供更好的产品和服务。转载于:https://www.cnblogs.com/WideUnion/archive/2012/09/22/2698321.html