数据属性生成值

该功能用于在数据插入或更新时为指定属性生成期望的值,Mego提供了非常灵活的实现方式以满足各种数据提交时的自动赋值问题。

生成值目的及模式

在Mego中生成值的目的一定是插入数据或更新数据,我们对这两种目的分开管理没有任何关系。

有如下四种值生成模式可作用于属性:

  1. 标识列
  2. 数据库生成
  3. 表达式生成
  4. 内存中生成

标识列生成值

例如下面这个例子对象Customer的数据对象Id属性在添加时会以标识列处理,对象成功插入后会从数据库返回相应的值。

public class Customer
{
[Identity(1,1)]
public int Id { get; set; } public string Name { get; set; }
}

数据库生成值

如下面这个例子所示,对象Customer的数据对象会在插入或更新成功后,会从数据库返回提交后的值,并且这会导致在提交时数据时会忽略内存中的值。

public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
[GeneratedValue(EGeneratedPurpose.InsertUpdate)]
public Database CreateDate { get; set; }
}

内存中生成值

这个模式还在完善中。

自定义生成值

这是一个很灵活的值生成方式,在这种模式中您需要自己先定义好一个LINQ表达式,用于在数据提交时用该表达式所翻译的数据库表达式的执行结果来提交数据,同时会返回相应的结果。例如我们下面先定义一个用于获取当前时间的值生成特性。

public class GeneratedDateTimeAttribute : GeneratedExpressionAttribute
{
public GeneratedDateTimeAttribute(EGeneratedPurpose purpose = EGeneratedPurpose.Update)
: base(purpose)
{
Expression = Expression.MakeMemberAccess(null, typeof(DateTime).GetProperty(nameof(DateTime.Now)));
}
}

之后我们将这个特性应用到指定的属性上,例如:

public class Customer
{
public int Id { get; set; } [GeneratedDateTime(EGeneratedPurpose.InsertUpdate)]
public Database UpdateDate { get; set; }
}

当数据对象Customer在插入或更新时都会执行数据库当前时间来更新UpdateDate字段。

[文档目录]

Mego开发文档 - 数据属性生成值的更多相关文章

  1. Mego开发文档 - 索引

    Mego 开发文档 Mego 快速概述 主要特性 获取Mego 使用流程 模型 查询 保存数据 入门 Mego 快速开始 创建项目 安装Nuget包 创建连接字符串 创建模型及数据上下文(添加引用) ...

  2. Mego开发文档 - 处理并发冲突

    处理并发冲突 数据库并发是指多个进程或用户同时访问或更改数据库中的相同数据的情况.并发控制是指用于确保存在并发更改时数据一致性的特定机制. Mego实现了乐观并发控制,这意味着它可以让多个进程或用户独 ...

  3. Mego开发文档 - 复杂保存操作

    复杂保存操作 Mego框架还提供了更强大的数据更新API,以简化开发工作,同时也保证的性能. 指定属性添加数据 本列中指定插入一个数据对象,并且只会插入三列数据,最后两个属性是以表达式的形式插入. u ...

  4. Mego开发文档 - 事务

    事务 事务允许以原子方式处理多个数据库操作.如果事务已提交,则所有操作都已成功应用于数据库.如果事务回滚,则没有任何操作应用于数据库. 默认行为 默认情况下,如果数据库提供程序支持事务,则单次的提交操 ...

  5. Mego开发文档 - 从EF6/EFCore迁移到Mego

    从EF6/EFCore迁移到Mego框架 如果您有EntityFragmework6或EntityFragmeworkCore的开发经验,在首次接触Mego框架时会发现这两个框架非常相似,本文将帮忙您 ...

  6. Mego开发文档 - 快速概述

    Mego 快速概述 Mego 是一款轻量级,可扩展和跨平台的数据访问技术. Mego 是一个对象关系映射器(O / RM),它使.NET开发人员能够使用.NET对象处理数据库.它消除了开发人员通常需要 ...

  7. Mego开发文档 - 快速开始

    Mego 快速开始 我们将创建一个简单的数据新增及查询来演示 Mego 的使用过程.演示中都是使用 Visual Studio 2017 作为开发工具,SQL Server 2012 作为数据库. 创 ...

  8. Mego开发文档 - 数据注释建模

    数据注释建模 Mego框架使用一组约定来基于CLR类来构建模型.您可以指定其他配置来补充或覆盖通过约定发现的内容. 在 Mego 中所有的数据对象必须要有主键.这里需要声明与EF不同的是框架只支持数据 ...

  9. Mego开发文档 - 数据库建模

    数据库建模 我们还提供了一些其他的特性,用于定制化数据库对应的数据结构. 表映射 框架默认会使用CLR类型名称做为实际数据库的表名,当两者不一致时可以使用该特性强制表名称. [Table(" ...

随机推荐

  1. 微信小程序-weui实例代码提取

    搜索框 对应代码如下: wxss文件 <view class="page"> <view class="page__hd"> <v ...

  2. php 制作圆形图片

    function createRoundImg($imgpath) { $ext = pathinfo($imgpath); $src_img = null; switch ($ext['extens ...

  3. Database operations of Mysql

    update 表名 set 字段名=replace(同一个字段名,原字符串,新字符串);  --修改记录. 一.初始化 # cd /usr/local/mysql # chown -R mysql:m ...

  4. 关于Oracle-SQL语句性能优化

    Oracle-Sql语句性能优化 相信许多从事几年的开发人员都有过一些经验,相对于刚出来的毕业生而言,对于同种操作sql结果,他们的代码性能会更高一些.虽然本人还是个实习生,在这还是写写自己     ...

  5. elementUI源码修改定制

    1.修改elementUI源码 首先从Git上克隆代码或者下载代码包 进入文件夹打开终端或Git Bash Here,运行npm install 安装依赖包.npm run dev 打开网页http: ...

  6. Algorithm --> 求N以内的真分数个数

    求N以内的真分数个数 For example, if N = 5, the number of possible irreducible fractions are 11 as below. 0 1/ ...

  7. Springmvc 视频学习地址

    http://www.icoolxue.com/album/show/216/

  8. java错题集

    解析:java中,JavaDoc注释以 /** 开头(中间写内容)以*/结尾 解析:A对象是类的实例,不是集合,其余正确 解析:创建一个对象的语法为: 类名 对象名=new 类名();,因此正确答案为 ...

  9. linux系统命令学习-用户管理

    1. 用户 a)  系统使用user id 简称UID来标志用户的唯一性 b)  用户分为三类:系统用户,根用户,普通用户 i. 普通用户 UID大于500,系统默认普通用户UID从500开始 只能操 ...

  10. 【备忘】Idea的那些事

    说到Java的IDE,似乎eclipse和Idea是目前的主流.然而,OO的课程组却一直在推荐使用eclipse,于是很多人就这样错过了Idea这样强大的IDE工具.本文将会对于Idea和Idea的一 ...