Mego开发文档 - 建模高级主题】的更多相关文章

建模高级主题 在建模过程中我们还有许多其他情况,这里列出本框架中的有用特性来用于解决此类问题. 函数映射 我们可以将指定的CLR函数映射到数据库中的系统函数或自定义函数,该特性用于补充框架中未提供的数据库函数交互. public class OrderManageEntities : DbContext { public OrderManageEntities(string name) : base(name) { } [DbFunction("GetSno")] public int…
Mego 开发文档 Mego 快速概述 主要特性 获取Mego 使用流程 模型 查询 保存数据 入门 Mego 快速开始 创建项目 安装Nuget包 创建连接字符串 创建模型及数据上下文(添加引用) 初始化数据库 演示添加及查询操作 从EF迁移到Mego框架 Code First创建EF 修改命名空间及注释 演示添加及查询操作 创建模型 数据注释建模 主键 自增列 排除属性 并发控制 可为空属性 长度 字符串 精度 数据库建模 表映射 列映射 数据类型 计算列 建模高级主题 函数映射 关系 继承…
复杂查询 Mego 还支持一些更高级的LLINQ查询写法,本文只列出一部分. 分组汇总查询 using (var db = new OrderManageEntities()) { var query = from a in db.Products group a by a.Category into g select new { g.Key, Count = g.Count(), Max = g.Max(a => a.Id) }; var data = query.ToArray(); } 分…
数据注释建模 Mego框架使用一组约定来基于CLR类来构建模型.您可以指定其他配置来补充或覆盖通过约定发现的内容. 在 Mego 中所有的数据对象必须要有主键.这里需要声明与EF不同的是框架只支持数据注释的语法来构建模型,在框架自动发现后,只有通过其他接口才能更改模型定义,我们使用一种简单直接的方式来声明,例如: public class Blog { [Key] public int BlogId { get; set; } public string Url { get; set; } }…
数据库建模 我们还提供了一些其他的特性,用于定制化数据库对应的数据结构. 表映射 框架默认会使用CLR类型名称做为实际数据库的表名,当两者不一致时可以使用该特性强制表名称. [Table("blogs")] public class Blog { public int BlogId { get; set; } public string Url { get; set; } } 列映射 框架默认会使用CLR属性名称做为实际数据库的列名,当两者不一致时可以使用该特性强制列名. public…
Mego 快速概述 Mego 是一款轻量级,可扩展和跨平台的数据访问技术. Mego 是一个对象关系映射器(O / RM),它使.NET开发人员能够使用.NET对象处理数据库.它消除了开发人员通常需要编写的大部分数据访问代码的需求.Mego 支持多个数据库引擎,请参阅数据库提供者了解详细信息. 如果您想通过编写代码来学习,我们将推荐我们的入门指南之一,让您开始使用 Mego . 获取 Mego Mego 本身就支持多个数据库,不会发行特定数据库的版本.这里列举两种从Nuget上获取方法.在Vis…
Mego 快速开始 我们将创建一个简单的数据新增及查询来演示 Mego 的使用过程.演示中都是使用 Visual Studio 2017 作为开发工具,SQL Server 2012 作为数据库. 创建项目 首先我们先创建一个名为 MegoGetStarted 控制台项目,如下图所示. 安装Nuget包 从Visual Studio中的Nuget的包管理器中查找Caredev.Mego可以安装Mego如下图所示. 创建连接字符串 这一步需要确定连接数据库的连接字符串. <connectionSt…
基础查询 Mego 使用语言集成查询(LINQ)从数据库查询数据.LINQ允许您使用C#(或其他.NET语言)根据派生的上下文和实体类编写强类型查询.将LINQ查询的表示传递给数据库提供者,翻译为数据库特定的查询语言(例如关系数据库的SQL). 文档代码示例的模型都是基于测试用例所用的模型. 加载所有数据 using (var db = new OrderManageEntitie()) { var list = db.Products.ToList(); } 加载单个数据 比较常用的方法,可以…
加载关系数据 Mego允许您使用模型中的导航属性来加载相关数据对象.目前只支持强制加载数据对象.只有正确配置了关系才能加载关系数据,相关内容可参考关系配置文档. 加载对象属性 您可以使用该Include方法指定要包含在查询结果中的相关数据.在以下两个示例中,结果中返回的订单中会包含相应客户的数据填充到Customer属性中. using (var db = new OrderManageEntiti()) { var data = db.Orders.Include(a => a.Custome…
基本保存操作 在Mego中没有更改跟踪,也就是说所有的新增.更新及删除都需要开发者自行判断.Mego会最为实际的将各个数据操作提交给数据库并执行. 添加数据 using (var db = new OrderManageEntities()) { db.Products.Add(new Product() { Id = 1, Name = "New Product", Code = "P1" }); db.Executor.Execute(); } 更新数据 usi…
保存关系数据 由于没有对象的更改跟踪,因此关系的操作需要开发者明确指定,在成功执行后Mego会影响到相应的关系属性中. 添加关系 在以下示例中如果成功执行则source的Customer属性会变为target对象. using (var db = CreateContext()) { var source = new Order() { Id = 1 }; var target = new Customer { Id = 2 }; db.Orders.AddRelation(source, s…
数据属性生成值 该功能用于在数据插入或更新时为指定属性生成期望的值,Mego提供了非常灵活的实现方式以满足各种数据提交时的自动赋值问题. 生成值目的及模式 在Mego中生成值的目的一定是插入数据或更新数据,我们对这两种目的分开管理没有任何关系. 有如下四种值生成模式可作用于属性: 标识列 数据库生成 表达式生成 内存中生成 标识列生成值 例如下面这个例子对象Customer的数据对象Id属性在添加时会以标识列处理,对象成功插入后会从数据库返回相应的值. public class Customer…
复杂保存操作 Mego框架还提供了更强大的数据更新API,以简化开发工作,同时也保证的性能. 指定属性添加数据 本列中指定插入一个数据对象,并且只会插入三列数据,最后两个属性是以表达式的形式插入. using (var db = new OrderManageEntities()) { db.Customers.Add(a => new Customer() { Id = a.Id, Name = a.Name + "a", Address1 = a.Address1 + a.A…
处理并发冲突 数据库并发是指多个进程或用户同时访问或更改数据库中的相同数据的情况.并发控制是指用于确保存在并发更改时数据一致性的特定机制. Mego实现了乐观并发控制,这意味着它可以让多个进程或用户独立进行更改,而无需同步或锁定的开销.在理想情况下,这些变化不会互相干扰,因此能够成功.在最糟糕的情况下,两个或更多进程将尝试进行相互冲突的更改,并且只有其中一个应该成功. 并发控制实现 配置为并发令牌的属性用于实现乐观并发控制:无论何时执行更新或删除操作,系统都会自动将数据库中的值与提交值进行比较,…
事务 事务允许以原子方式处理多个数据库操作.如果事务已提交,则所有操作都已成功应用于数据库.如果事务回滚,则没有任何操作应用于数据库. 默认行为 默认情况下,如果数据库提供程序支持事务,则单次的提交操作都将应用于事务中.如果任何更改失败,则事务回滚,并且没有任何更改应用于数据库.这意味着提交操作可以保证完全成功,或者在发生错误时保持数据库不被修改. 对于大多数应用程序,这种默认行为就足够了 如果您的应用程序要求认为有必要,您应该只手动控制交易. 由于Mego会支持数据DDL操作,由于部分数据库会…
从EF6/EFCore迁移到Mego框架 如果您有EntityFragmework6或EntityFragmeworkCore的开发经验,在首次接触Mego框架时会发现这两个框架非常相似,本文将帮忙您了解到两者的差异以及从EF6/EFCore迁移到Mego的方法. Mego本身就是基于EF6与EFCore的思想来开发的,因此这两者的很多做法都是相通的,同时为了考虑到易于使用,所以最外层的API我们几乎还是维持了EF6的原样,但是它们毕竟还是两个框架,只是表面相似其实有着本质的不同.这里我们列出几…
C#微信开发文档 开发前准备 微信公众平台链接: https://mp.weixin.qq.com/cgi-bin/home?t=home/index&lang=zh_CN 开发初期我们使用测试号测试我们的微信功能,微信提供了测试号申请,它具有大部分我们需要的功能 微信公众平台测试号申请网址: http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 1:测试号申请申请成功后我们首先要将我们的服务器接入微信接入微信公众平台来进行开…
QM项目开发文档整理 前言 在W公司工作4个多月,庆幸接触到的全是"硬"项目,真枪实干,技术.经验.能力都得到了很大提升. QM项目 此项目WEB前端学到的东西很多,对PHP项目的架构设计.MVC框架有了更深的认识. CSS知识汇总 垂直对齐一幅图像,可用vertical-align属性,如: img{ vertical-align:text-top; } 对于浮动元素记得清除浮动,清除浮动的通用代码如下,高级浏览器可使用after伪类: .c,.fix:after{ clear:bo…
[技巧]使用Xcode集成的HeaderDoc自动生成注释和开发文档     Doxygen本来是一个很好的工具,可是我感觉在mac系统下,如果用doxygen最后生成的CHM文件感觉就不是那么恰当,应为本身CHM是微软的产品,苹果系统上并不是很通用,很经常出现文件乱码的情况.这时CHM就比不过PDF和RTF文件.其实直接的html文件也不错. 那在mac平台下没有什么其他的替代方法吗,肯定是有的.特地留意了一下,发现以前真是没有好好的使用xcode强大功能. HeaderDoc工具 Heade…
之前使用 PHPDocument 生成过开发文档,但是界面看着不爽,遂尝试了 ApiGen 生成,不得不说界面看着舒服多了,下面说说安装和使用的方法. ApiGen官网: http://www.apigen.org/ 一.从 github 获取 Windows 的安装包 https://github.com/apigen/apigen/downloads 选择 Version x.x.x standalone package (zip) 二.检测.安装运行环境 1.进入PHP安装目录,按住shi…
转载自个人主页 前言 翻译开源项目ExcelDNA开发文档 异步处理 ExcelDNA支持两种异步函数: RTD,该函数适用与Excel2003及以上版本,(当你使用ExcelAsyncUtil.*时,RTD起作用) 本地Excel异步函数,使用Excel2010及以上版本(当你的函数使用ExcelAsyncHandle作为参数并且返回值为void时) 两种方式的不同之处 RTD函数允许你在函数执行的时候,与Excel通信 本地异步函数,当函数已经被执行时,Excel只允许执行工作薄的其他部分.…
翻译自苹果官方Apple Pay开发文档.目前版本为1.0 概览: Apple Pay为用户从你的App里购买实际的物品和服务提供简单而安全的方法.通过Touch ID,用户可使用储存在iPhone 6和iPhone 6 Plus上的信用卡和借记卡支付证书来授权支付.这些储存证书的模型包含一个Secure Element,并将支付证书从app运行的主进程中分离出来. Apple Pay还是 应用内支付(IAP)? 理解Apple Pay和应用内支付之间的区别是非常重要的.Apple Pay用于销…
内容概述 本文内容来自开发文档"Traning > Displaying Bitmaps Efficiently",包括大尺寸Bitmap的高效加载,图片的异步加载和数据缓存. Bitmap的处理和加载非常重要,这关系到app的流畅运行和内存占用,如果方法不当,很容易导致界面卡顿和OOM.其中的原因大致有: android系统对进程的内存分配限制,移动设备的配置较低. Bitmap会消耗很大内存.比如相机拍下的 2592x1936 像素的照片,以ARGB_8888 格式一次加载到…
通用进销存管理系统 + 开发文档+ 使用说明Net源码下载 包括下面的模块基础资料模块采购管理模块库存管理模块商务管理模块营业管理模块维修管理模块会员管理模块财务管理模块 Net通用进销存管理系统 + 开发文档+ 使用说明…
学习帮助文档大全 jquery,css,Android中文开发文档,JScript,SQL掌用实例 http://api.jq-school.com/…
http://hurlex.0xffffff.org/ 这里是hurlex这个基于x86架构的内核Demo的详细开发文档, 包含PDF文档和生成PDF的XeLaTex源码和文档每章节的阶段代码. 你可以按照如下步骤获得整个项目代码. $ git clone https://github.com/hurley25/hurlex-doc.git…
ECMall 模板开发文档 前 言 欢迎阅读 ECMall 模板制作教程,通过阅读本教程可快速上手 ECMall 模板的使用和制作. ECMall 模板制 作要求用户具备 XML . XHTML 和 CSS 基础知识:至少掌握一种文本编辑器或网页制作工具 ( 如: EditPlus,Dreamweaver,Textmate 等 ) : 本教程还将及一些模板代码, 如从没有了解过 Smarty 建议阅读 Smarty 帮助手册. 第一节 -ECMall 模板机制介绍 通过阅读本节你将了解: 1.…
AFC项目开发文档整理 PHPCMS 的确是一个伟大的CMS,我对它爱不释手. 标签嵌套无法loop获取的解决办法.关键代码如下: /\*后台添加\*/ $str = preg_replace ( "/\{loop(\S+)\s+(\S+)\s+(\S+)\}/", "<?php \$n\\1=1;if(is_array(\\2)) foreach(\\2 AS \\3) { ?>", $str ); $str = preg_replace ( &quo…
在android学习中,动作交互是软件中重要的一部分,其中的Scroller就是提供了拖动效果的类,在网上,比如说一些Launcher实现滑屏都可以通过这个类去实现..   例子相关博文:Android 仿 窗帘效果 和 登录界面拖动效果 (Scroller类的应用) 附 2个DEMO及源码   在广泛使用的侧边滑动导航开源库 --SlidingLayer其实就是使用到了Scroller类进行的实现,下载地址:GITHUB  ,下面要讲的不是这个库,而是这个库的实现过程中使用到的---Scrol…
在android学习,行动互动是软件的重要组成部分,其中Scroller是提供了拖动效果的类,在网上.比方说一些Launcher实现滑屏都能够通过这个类去实现.. 样例相关博文:Android 仿 窗帘效果 和 登录界面拖动效果 (Scroller类的应用) 附 2个DEMO及源代码 在广泛使用的側边滑动导航开源库 --SlidingLayer事实上就是使用到了Scroller类进行的实现,下载地址:GITHUB  .以下要讲的不是这个库,而是这个库的实现过程中使用到的---Scroller类.…