DbEntry.Net.v3.5 快速教程
1、DbEntry 介绍
EN&Download——[DbEntry Framework下载][Tutorials For Version 3.5]
CN&Summary:总体特性的介绍详见Elephant翻译的DbEntry Framework系列[Elephant‘s WorkBench]
2、object definition
///<authors>
/// SOPICH
/// </authors>
/// <email>
/// titan_song713@hotmail.com
/// </email>
/// <date>2009/03/06</date> #region 数据对象类的实现 <Inherit from>DbObjectModel||DbObject||IDbObject||NamedDbObject
/// <summary>
/// 定义一个派生于DbObjectModel<T>的类User
/// </summary>
/// <methods>
/// DbObjectModel<T>的静态方法
/// Save()——当数据库无此记录则Insert(),有则Update()
/// Delete()
/// Find()
/// New()
/// FindById()
/// FindBySql()
/// FindOne()
/// FindRecent()
/// etc.
/// </methods>
/// <bookmarks>
/// 拥有特殊的PartialUpdate()
/// </bookmarks> public abstract class User : DbObjectModel<User>
{
public abstract string Name { get; set; }
} /// <summary>
/// 定义一个派生于DbObject的类User
/// </summary>
/// <methods>
/// 无静态方法
/// </methods>
/// <bookmark>
/// 默认添加一个[User].Id的column,并设置为long型的自增长标识符
/// 无静态方法PartialUpdate()
/// </bookmark>
public class User : DbObject
{
public string Name;
}
/// <summary>
/// 定义一个派生于System.object的类User
/// </summary>
/// <methods>
/// </methods>
/// <parameters>
/// bool IsDbGenerate——可定义改属性是否为自增长,默认为true
/// int Length——最大长度
/// </parameters>
/// <bookmark>
/// 无Id,但可自定义主键和多键位
/// </bookmark>
public class User : IDbObject
{
[DbKey(IsDbGenerate=false), Length(50)]//设置主键为Name字段,string.Length为50,非自增长类型
public string Name;
} /// <summary>
/// 定义一个派生于NamedDbObject的类User
/// </summary>
/// <methods>
/// 同上
/// </methods> public class User : NamedDbObject, IDbObject
{
//默认主键为Name,Name.Length=255
}
#endregion #region [DbKey]——键位的设置
/// <summary>
/// [DbKey]
/// </summary>
/// <methods>
/// </methods>
/// <performance>
/// 实现该属性为一个主键,默认属性IsDbGenerate为true,会自增长
/// </performance>
///单主键primary key
public class User : IDbObject
{
[DbKey]///相当于IsDbGenerate=true
public long userID; public string Name;
}
///多键位mutil-key
public class MKey : IDbObject
{
[DbKey(IsDbGenerate = false), Length(50)]
public string Name; [DbKey(IsDbGenerate = false)]
public int Age; public bool Gender;
}
#endregion #region [DbTable]自定义Table对象的名称 [DbColumn]自定义Column的名称
/// <summary>
/// 提供数据库对象的属性定制
/// </summary>
/// <methods>
/// [DbTable("TableName")]——数据库Table对象的名称
/// 位于类声明的前面
/// </methods>
/// <methods>
/// [Length(int i), AllowNull,StringColumn(IsUnicode=true, Regular=CommonRegular.[EmailRegular||Url])]
/// 设置Column的长度,是否为空,字符列的格式(bool IsUnicode)用于区分nvar和var等,(Enum CommonRegular)提供了常用的email和url正则表达式验证
///位于字段名声明的前面
/// </methods>
/// <bookmark>
/// 实现这种映射还可以在config文件(App.config or Web.config)
/// <Lephone.Settings>
/// <add key="@数据库表名" value="自定义对象类" />
/// </Lephone.Settings>
/// </bookmark>
[DbTable("User")]
public class MyUser : IDbObject
{
[DbColumn("Name")]
public string theName;
}
public class User : IDbObject
{
[Length(50), AllowNull]
public string Name; [StringColumn(IsUnicode=true, Regular=CommonRegular.EmailRegular||url)]
public string Email;
}
#endregion #region [Exclude]
/// <summary>
/// [Exclude]——修饰数据对象中不需要实现数据库交互的字段
/// </summary>
/// <methods>
/// 除了使用[Exclude],私有字段和只读属性,都不会实现数据库存储交互
/// </methods> public class User : IDbObject
{
public string Name; [Exclude]
public bool isUserInput; private int times; // exclude too public int code { get { return 0; } } // exclude too
}
#endregion #region 数据库索引
/// <summary>
/// [Index("Name_Age", ASC = false, UNIQUE = true)]
/// </summary>
/// <performance>
/// 建立索引
/// </performance> class MyTest
{
[DbKey]
public long Id = 0; [Index("Name_Age", ASC = false, UNIQUE = true)]
public string Name = null; [Index("Name_Age", ASC = false, UNIQUE = true)]
public int Age = 0;
}
#endregion
#region Join 表的联合
/// <summary>
/// 实现两个或多个表的联合
/// </summary>
/// <methods>
/// [JoinOn(int Index,"first col","second col",Enum CompareOpration,Enum JoinMode)]
/// </methods>
//两个表的联合
[DbTable("SampleData.Id", "TheAge.Id")]
public class JoinTable1 : IDbObject
{
[DbColumn("SampleData.Id")] public long Id;
public string Name;
public UserRole Role;
public DateTime JoinDate;
public int Age;
}
//三个表的联合
[JoinOn(0, "SampleData.Id", "TheAge.Id", CompareOpration.Equal, JoinMode.Inner)]
[JoinOn(1, "SampleData.Id", "EnumTable.Id", CompareOpration.Equal, JoinMode.Inner)]
public class JoinTable2 : IDbObject
{
[DbColumn("SampleData.Id")] public long Id;
[DbColumn("SampleData.Name")] public string Name;
public UserRole Role;
public DateTime JoinDate;
public int Age;
[DbColumn("EnumTable.Name")] public string EnumName;
}
#endregion #region Object Relationship[HasOne, HasMany, BelongsTo, HasAndBelongsToMany]
/// <summary>
/// 实现一对一、一对多、多对一、多对多的对象关系
/// </summary>
[DbTable("People")]
public abstract class Person : DbObjectModel<Person>
{
public abstract string Name { get; set; } [HasOne(OrderBy = "Id DESC")]
public abstract PersonalComputer PC { get; set; }
} public abstract class PersonalComputer : DbObjectModel<PersonalComputer>
{
public abstract string Name { get; set; } [BelongsTo, DbColumn("Person_Id")]
public abstract Person Owner { get; set; }
}
#endregion #region Just Example
/// <summary>
/// 如何定义枚举型的字段,实现数据对象的域
/// </summary>
public enum UserRole
{
Manager,
Worker,
Client
} public abstract class SampleData : DbObjectModel<SampleData>
{
[Length(50)] public abstract string Name { get; set; }
public abstract UserRole Role { get; set; }
public abstract DateTime JoinDate { get; set; }
public abstract bool Enabled { get; set; }
public abstract int? NullInt { get; set; } public SampleData() {}
public SampleData(string Name, UserRole Role, DateTime JoinDate, bool Enabled)
: this(Name, Role, JoinDate, Enabled, null) { }
public SampleData(string Name, UserRole Role, DateTime JoinDate, bool Enabled,
int? NullInt)
{
this.Name = Name;
this.Role = Role;
this.JoinDate = JoinDate;
this.Enabled = Enabled;
this.NullInt = NullInt;
}
}
#endregion
DbEntry.Net.v3.5 快速教程的更多相关文章
- Python快速教程 尾声
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 写了将近两年的Python快速教程,终于大概成形.这一系列文章,包括Python基 ...
- 【Python大系】Python快速教程
感谢原作者:Vamei 出处:http://www.cnblogs.com/vamei 怎么能快速地掌握Python?这是和朋友闲聊时谈起的问题. Python包含的内容很多,加上各种标准库.拓展库, ...
- 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV
这次博客园的排版彻底残了..高清版请移步: https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程: 给深度学习入门者的Python快速教程 - 基础篇 给深度 ...
- 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇
始终无法有效把word排版好的粘贴过来,排版更佳版本请见知乎文章: https://zhuanlan.zhihu.com/p/24309547 实在搞不定博客园的排版,排版更佳的版本在: 给深度学习入 ...
- Python快速教程目录(转)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 怎么能快速地掌握Python?这是和朋友闲聊时谈起的问题. Python包含的内容 ...
- Python快速教程 尾声(转)
原文地址: http://www.cnblogs.com/vamei/p/3603046.html 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留 ...
- 发布《Linux工具快速教程》
发布<Linux工具快速教程> 阶段性的完成了这本书开源书籍,发布出来给有需要的朋友,同时也欢迎更多的朋友加入进来,完善这本书: 本书Github地址:https://github.com ...
- Python快速教程
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 怎么能快速地掌握Python?这是和朋友闲聊时谈起的问题. Python包含的内容 ...
- AFNnetworking快速教程,官方入门教程译
AFNnetworking快速教程,官方入门教程译 分类: IOS2013-12-15 20:29 12489人阅读 评论(5) 收藏 举报 afnetworkingjsonios入门教程快速教程 A ...
随机推荐
- 使用 FP-growth 算法高效挖掘海量数据中的频繁项集
前言 对于如何发现一个数据集中的频繁项集,前文讲解的经典 Apriori 算法能够做到. 然而,对于每个潜在的频繁项,它都要检索一遍数据集,这是比较低效的.在实际的大数据应用中,这么做就更不好了. 本 ...
- 利用jQuery和CSS实现环形进度条
实现原理 原理非常的简单,在这个方案中,最主要使用了CSS3的transform中的rotate和CSS3的clip两个属性.用他们来实现半圆和旋转效果. 半环的实现 先来看其结构. HTML < ...
- Ionic学习笔记三 Gulp在ionic中的使用
简介 Gulp是一个基于流的自动化构建器. 安装 npm config set registry http://registry.npm.taobao.org ---最好用国内源 npm instal ...
- 接触到得到新语言里面涉及到很多关于ECMscript相关知识,所以还是来总结一下吧
ES6新增加了一些特性下面我就一边回忆一边写博文吧. 1.es6里面给我印象最深的应该就是箭头操作符(=>),它简化了函数的书写,第一次看见的时候完全懵逼,然后百度后才知道.操作符左边为输入的参 ...
- js中cookie的使用详细分析
JavaScript中的另一个机制:cookie,则可以达到真正全局变量的要求. cookie是浏览器 提供的一种机制,它将document 对象的cookie属性提供给JavaScript.可以由J ...
- [UI]抽屉菜单DrawerLayout分析(一)
本文转载于:http://www.cnblogs.com/avenwu/archive/2014/04/16/3669367.html 侧拉菜单作为常见的导航交互控件,最开始在没有没有android官 ...
- apk安全测试思路
一: apk安全测试 对于一款android的apk程序,主要进行的测试分两部分: 1) 接口测试 ---接口测试实际上是常见的web安全测试 2) android组件测试 --组件测试实际上是and ...
- css3实现酷炫的3D盒子翻转效果
简介 运用css3先在平面空间组成立方体盒子,再让整个盒子翻转起来,先来张效果图: 步骤 1.先用css将6张图片摆成下图的样子: 下面就是通过css3的3D变换将每个面进行翻转,使之成为一个立体的盒 ...
- TOMCAT 无法安装P7B格式的证书
背景:通过按以下链接的方式生成了CSR文件,并申请到P7B格式的证书 现象:TOMCAT安装该证书时,要求输入Keystore key, 但是P7B证书自身并不携带私钥.导致无法通过TOMCAT安装该 ...
- 远程连接Oracle时出现ORA-01034 和ORA-27101 的解决办法
服务器本地连接自身没有问题,但远程客户端连接时报错,远程客户端使用tnsping也没有问题. cmd->tnsping 192.168.56.101:1521/ora11gR2 tnsping命 ...