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

数据注释建模

Mego框架使用一组约定来基于CLR类来构建模型。您可以指定其他配置来补充或覆盖通过约定发现的内容。

在 Mego 中所有的数据对象必须要有主键。这里需要声明与EF不同的是框架只支持数据注释的语法来构建模型,在框架自动发现后,只有通过其他接口才能更改模型定义,我们使用一种简单直接的方式来声明,例如:

public class Blog
{
    [Key]
    public int BlogId { get; set; }

    public string Url { get; set; }
}

常用的数据注释特性类都在

using Caredev.Mego.DataAnnotations;

命名空间下。

主键约定

我们约定一个名为Id或<type name>Id将被配置为当前数据对象的主键属性。

class Car
{
    public string Id { get; set; }

    public string Make { get; set; }
    public string Model { get; set; }
}
class Car
{
    public string CarId { get; set; }

    public string Make { get; set; }
    public string Model { get; set; }
}

您可以使用数据注释强制一个或多个属性为主键。以下为单个主键和复合主键的示例:

class Car
{
    [Key]
    public string LicensePlate { get; set; }

    public string Make { get; set; }
    public string Model { get; set; }
}
public class Warehouse
{
    [Key, Column(nameof(Id), Order = 1)]
    public int Id { get; set; }
    [Key, Column(nameof(Number), Order = 2)]
    public int Number { get; set; }

    public string Name { get; set; }
    public string Address { get; set; }
}

如果您声明数据对象为复合主键。

自增列

有不少数据库是支持标识列(自增列),使用该特性可以声明一个属性受数据库自增列控制,同时可以指定自增的起始及步长。

public class Blog
{

    [Identity(1, 1)]
    public int BlogId { get; set; }

    public string Url { get; set; }
}

排除属性

您可以指定数据对象中某个属性不参与映射,补充如果某个属性为只读属性框架会自动将它排除,这与强制声明排除特性效果相同。

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }

    [NotMapped]
    public DateTime LoadedFromDatabase { get; set; }
}

并发控制

与EF相同,本框架支持乐观并发,您可以声明一个或多个属性参与提交时并发检查。

public class Person
{
    public int PersonId { get; set; }

    [ConcurrencyCheck]
    public string LastName { get; set; }

    public string FirstName { get; set; }
}

可为空属性

指示当前属性是否可以为空。

public class Blog
{
    public int BlogId { get; set; }

    [Nullable(false)]
    public string Url { get; set; }
}

长度

配置长度向数据存储提供关于用于给定属性的适当数据类型的提示。最大长度仅适用于数组或可变长度的数据类型,例如byte[]。

public class Blog
{
    public int BlogId { get; set; }

    [Length(500, false)]
    public byte[] Image { get; set; }
}

字符串

在CLR中的字符串类型将会映射到数据库中的多种字符串存储类型,该特性可确定对应的实际类型。例如下面代码中声明Url属性在SQL Server数据库中的类型为nvarchar(500)。

public class Blog
{
    public int BlogId { get; set; }

    [String(500, false)]
    public string Url { get; set; }
}

精度

用于配置存精度信息的数据类型列,例如decimal。

public class Product
{
    public int Id { get; set; }

    [Precision(12,4)]
    public decimal Price { get; set; }
}

原文地址:https://www.cnblogs.com/CarefreeXT/p/8747737.html

时间: 2024-10-19 14:17:26

Mego开发文档 - 数据注释建模的相关文章

Mego开发文档 - 数据库建模

数据库建模 我们还提供了一些其他的特性,用于定制化数据库对应的数据结构. 表映射 框架默认会使用CLR类型名称做为实际数据库的表名,当两者不一致时可以使用该特性强制表名称. [Table("blogs")] public class Blog { public int BlogId { get; set; } public string Url { get; set; } } 列映射 框架默认会使用CLR属性名称做为实际数据库的列名,当两者不一致时可以使用该特性强制列名. public

Mego开发文档 - 基础查询

基础查询 Mego 使用语言集成查询(LINQ)从数据库查询数据.LINQ允许您使用C#(或其他.NET语言)根据派生的上下文和实体类编写强类型查询.将LINQ查询的表示传递给数据库提供者,翻译为数据库特定的查询语言(例如关系数据库的SQL). 文档代码示例的模型都是基于测试用例所用的模型. 加载所有数据 using (var db = new OrderManageEntitie()) { var list = db.Products.ToList(); } 加载单个数据 比较常用的方法,可以

Mego开发文档 - 快速开始

Mego 快速开始 我们将创建一个简单的数据新增及查询来演示 Mego 的使用过程.演示中都是使用 Visual Studio 2017 作为开发工具,SQL Server 2012 作为数据库. 创建项目 首先我们先创建一个名为 MegoGetStarted 控制台项目,如下图所示. 安装Nuget包 从Visual Studio中的Nuget的包管理器中查找Caredev.Mego可以安装Mego如下图所示. 创建连接字符串 这一步需要确定连接数据库的连接字符串. <connectionSt

Mego开发文档 - 快速概述

Mego 快速概述 Mego 是一款轻量级,可扩展和跨平台的数据访问技术. Mego 是一个对象关系映射器(O / RM),它使.NET开发人员能够使用.NET对象处理数据库.它消除了开发人员通常需要编写的大部分数据访问代码的需求.Mego 支持多个数据库引擎,请参阅数据库提供者了解详细信息. 如果您想通过编写代码来学习,我们将推荐我们的入门指南之一,让您开始使用 Mego . 获取 Mego Mego 本身就支持多个数据库,不会发行特定数据库的版本.这里列举两种从Nuget上获取方法.在Vis

Mego开发文档 - 基本保存操作

基本保存操作 在Mego中没有更改跟踪,也就是说所有的新增.更新及删除都需要开发者自行判断.Mego会最为实际的将各个数据操作提交给数据库并执行. 添加数据 using (var db = new OrderManageEntities()) { db.Products.Add(new Product() { Id = 1, Name = "New Product", Code = "P1" }); db.Executor.Execute(); } 更新数据 usi

Mego开发文档 - 复杂查询

复杂查询 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(); } 分

onvif 开发文档【2】

二: onvif 开发环境的搭建 下边这张图来自于网上,对我们熟悉onvif开发描述的十分清晰,我就是顺着这个思路走下去的. 从上边的介绍中,我们基本知道onvif是个什么协议,其中十分关键一点是这种协议的展现形式是webservice.让我们通过下图对webservice的调用过程有一个初步的了解. 对基于webservice格式存在接口,我们第一步要首先寻找webserive对应的wsdl文件在那里?当然去onvif的官方网站去找了.要搭建开发平台的第一步就是从onvif的官方网站获取wsd

软件开发文档

软件开发文档 软件开发文档是软件开发使用和维护过程中的必备资料.它能提高软件开发的效率,保证软件的质量,而且在软件的使用过程中有指导,帮助,解惑的作用,尤其在维护工作中,文档是不可或缺的资料. 软件文档可以分为开发文档和产品文档两大类. 开发文档包括:<功能要求>.<投标方案>.<需求分析>.<技术分析>.<系统分析>.<数据库文档>.<功能函数文档>.<界面文档>.<编译手册>.< QA 文

Android官方开发文档Training系列课程中文版:目录

原文地址 : http://android.xsoftlab.net/training/index.html 引言 在翻译了一篇安卓的官方文档之后,我觉得应该做一件事情,就是把安卓的整篇训练课程全部翻译成英文,供国内的开发者使用,尤其是入门开发者,虽然现在网络上有很多入门课程,但是还是依靠官方文档学习来的靠谱,安卓官方文档是一系列的课程,使每个人可以系统的掌握安卓的知识,相比其它课程来说,它为开发者提供了查缺补漏的功能. 在这里你可以领略到安卓开发世界的精彩. Tips : 同时,本目录可以作为