DataVeryLite 是基于.net 4.0的数据库持久化ORM框架.

目前支持的数据库有Sqlserver,Mysql,Oracle,Db2,PostgreSql,Sqlite和Access.
 
DataVeryLite 的配置系统非常简单,稍微有点c#基础的程序猿,半小时都能上手;
不仅学习简单,编码量也非常少;熟练之后基本可以复制粘贴来完成配置。

1.连接字符串配置

a,App.config/Web.config配置方式

    在<connectionStrings>节点中添加配置,示列如下:
 <add name="myConnetion" connectionString="Data Source=host;Initial Catalog=db;Integrated Security=True" providerName="sqlserver"/>

需要说明的是 name connectionString和providerName三个属性缺一不可

providerName必须是DataVeryLite提供的7个枚举值(下表中的providerName).
 
DataBase Connection String sample providerName
Sqlite Data Source=path;Version=3; sqlite
Access Provider=Microsoft.Jet.OLEDB.4.0;Data Source=path access
MySql server = host; user id = name; password = pwd; database = db; mysql
PostgreSql Server= host;User Id=name;Password=pwd;Database=db; postgresql
SqlServer Data Source=host;Initial Catalog=db;Integrated Security=True sqlserver
Db2 Database=db;User ID=name;Server=host;password=pwd db2
Oracle Data Source=XE;User Id=name;Password=pwd; oracle
 
 
 
 
 
 
 
 
 
 
 
     b,ConnectionStringSettingsProvider方式
     可以在代码中继承ConnectionStringSettingsProvider,然后实现其方法。通过这种方式可以兼容任何其他获取连接字符串的方式,
你可以在实现的方法中添加任何获取连接字符串的逻辑,不过前提是key值不能重复。
代码例子如下:
public class MyConnectionStringProvider : ConnectionStringSettingsProvider
{
public override List<ConnectionStringSettings> ToConnectionString()
{
var sqlServverConnStr = new ConnectionStringSettings
{
Name = "sqlserver1",
ConnectionString = "Data Source=host;Initial Catalog=db;Integrated Security=True",
ProviderName = "sqlserver"
};
var mysqlConnStr = new ConnectionStringSettings
{
Name = "mysql1",
ConnectionString = "server = host; user id = name; password = pwd; database = db;",
ProviderName = "sqlserver"
};
return new List<ConnectionStringSettings>() { sqlServverConnStr,mysqlConnStr };
}
}

2,数据库映射

    假设我们有一个数据库Dandelion
    那么我们一般可以做如下配置
 
     [DataBase(Key = "sqlserver1")]
public class Dandelion : DataVeryLite.Core.EntityPool
{ }

DataBaseAttribute中的Key属性对应的连接字符串配置中的key值,这样Dandelion会自动加载数据库上下文信息。

DataVeryLite.Core.EntityPool中会有很多实用的操作数据库的方法,比如高性能的批量操作.
DataVeryLite.Core.EntityPool更多详细内容会在后面文章中介绍.
3,表映射
 假设我们有一个数据表Person
 那么我们一般可以做如下配置

    [Table(Name = "Person" , EntityPool = typeof(Dandelion))]
public partial class Person : DataVeryLite.Core.Entity
{
[Column(Name = "Id", IsPrimaryKey = true)]
public int Id { get; set; } [Column(Name = "Name")]
public string Name{ get; set; } [Column(Name = "Sex")]
public string Sex { get; set; } [Column(Name = "Phone")]
public string Phone { get; set; } [Column(Name = "Email")]
public string Email { get; set; }
}

TableAttribute中的Name为表的名字。可以不设置,这时Person的类名就对应表的名字,如果我们需要类名和表名不一致,这时可以设置Name。

TableAttribute中的EntityPool 为指向数据库。主要目的是区分其他数据库。可以不设置,而设置TableAttribute中的Key。EntityPool和Key的作用都是自动加载数据库和表上下文信息。
ColumnAttribute中的Name为表中字段的名字。可以不设置,这时属性名就对应字段名,如果我们需要属性名和字段名不一致,这时可以设置Name。
ColumnAttribute中的IsPrimaryKey指示该字段是否是主键。
4,key值管理
在.net中key值是一个字典的唯一键值,不能重复,否则会报异常:System.ArgumentException : 已添加了具有相同键的项。
设置key非常重要,也是DataVeryLite配置中最为核心的步骤。可以通过以下三种方式设置key:
     a,继承EntityPool和Entity的实体类,可以设置key属性。
     b,在DataBaseAttribute和TableAttribute中可以设置key。
     c,Configure.SetKey委托,设置全局key
他们的优先级分别是a>b>c
 
下面是全局key的列子,你可以根据自己的需要设置逻辑。

Configure.SetKey = (sender) => "sqlserver1";

Configure.SetKey = (sender) =>
{
if (sender is Dandelion)
{
return "sqlserver1";
}
else
{
return "mysql1";
}
};

项目地址 http://dataverylite.codeplex.com/

NuGet

PM> Install-Package DataVeryLite

  

Example lite

using System;
public class HelloWorld
{
public static void Main(params string[] args)
{
var p=Models.Xe.Person();
p.Load(By.Id(1));
p.Del();
Console.WriteLine(p.Name+","+p.Age);
}
}

DataVeryLite入门教程(一) 配置篇的更多相关文章

  1. DataVeryLite入门教程(二) Entity篇

    DataVeryLite 是基于.net 4.0的数据库持久化ORM框架. 目前支持的数据库有Sqlserver,Mysql,Oracle,Db2,PostgreSql,Sqlite和Access. ...

  2. Systemd 入门教程:实战篇

    Systemd 入门教程:实战篇 上一篇文章,介绍了 Systemd 的主要命令,这篇文章主要介绍如何使用 Systemd 来管理我们的服务,以及各项的含义: 一.开机启动 对于那些支持 System ...

  3. Spring Cloud 入门教程 - 搭建配置中心服务

    简介 Spring Cloud 提供了一个部署微服务的平台,包括了微服务中常见的组件:配置中心服务, API网关,断路器,服务注册与发现,分布式追溯,OAuth2,消费者驱动合约等.我们不必先知道每个 ...

  4. 【转帖】Systemd 入门教程:命令篇

    Systemd 入门教程:命令篇  Copy From http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html 感觉 ...

  5. Linux Capabilities 入门教程:概念篇

    原文链接:Linux Capabilities 入门教程:概念篇 Linux 是一种安全的操作系统,它把所有的系统权限都赋予了一个单一的 root 用户,只给普通用户保留有限的权限.root 用户拥有 ...

  6. Linux 命令详解(八)Systemd 入门教程:实战篇

    Systemd 入门教程:实战篇 http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html

  7. Linux 命令详解(七)Systemd 入门教程:命令篇

    Systemd 入门教程:命令篇http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html

  8. (转)Systemd 入门教程:命令篇

    Systemd 入门教程:命令篇 原文:http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html Systemd 入门 ...

  9. SSH(Struts2+Spring4+Hibernate4)框架教程之配置篇

    SSH(Struts2+Spring4+Hibernate4)框架教程之配置篇 - 若明天不见 - 博客频道 - CSDN.NEThttp://blog.csdn.net/why_still_conf ...

随机推荐

  1. JAVA SE回顾及思考(3)——排序算法

    排序的算法是很多公司的笔试和面试题,个人感觉Java中其实无需使用这些排序方法,因为Java中已经为我们提供了很方便效率很高的sort()方法.但是不使用不能代表不需要学习这些算法,也不是仅仅为了面试 ...

  2. cordova通过指纹插件进行指纹验证

    原文:cordova通过指纹插件进行指纹验证 版权声明:本文为博主原创文章,转载须注明出处,博客地址:https://blog.csdn.net/wx13227855087 https://blog. ...

  3. MinGW安装和使用(不是mingw-w32)

    MinGW全称Minimalist GNU For Windows,是个精简的Windows平台C/C++.ADA及Fortran编译器,相比Cygwin而言,体积要小很多,使用较为方便.MinGW提 ...

  4. Arcgis api for javascript学习笔记 - 不改变默认端口(6080)情况下,外网访问Arcgis Server 发布的接口

    Arcgis Server发布的地图服务地址默认端口号是6080,假设本机上只对80端口做了外网映射,在IIS中部署了一个网站绑定了80端口,那么网站中某个页面通过arcgis api for js ...

  5. 解决mysql连接异常—-com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception

    DBCP连接池连接MySql数据库时,一奇葩数据库设置为30秒内无请求自动断开.超时后链接无法关闭,活动链接数飞奔,最后挂掉. 网上找了一圈,一般是这三种,方法一pass,方法二测试无效可能设置错了吧 ...

  6. element-ui 的 日历 datetimerange 日期格适化 , 适合1版本

    这家伙把我坑坏了 , 本来吧数据准备好了 , 一掉接口居然不好使 ,日期总是有偏差 , 结果一看是提交的数据有问题 , 后台直接接受的字符串 new 的Date , 2017-12-24T16:00: ...

  7. 假设做一个循环滚动UIScrollView

    先上效果图: 首先初始化: - (void)viewDidLoad { //加入最后一张图 用于循环 int length = 4; NSMutableArray *tempArray = [NSMu ...

  8. readline库的使用

    接口十分简单,readline和addhistory: #include <stdlib.h> #include <stdio.h> #include <unistd.h ...

  9. c#引用相等性比较(ReferenceEquals)

    Object.ReferenceEquals方法原型 public static bool ReferenceEquals( object objA, object objB) namespace T ...

  10. 百度最热门31款开源项目:ECharts火爆了!

    本文为大家整理了百度开源的热门项目,看看有没有感兴趣的,排名顺序按照 Github ★Star 数排列. 0.一个纯 Java 的图表库 ECharts★Star 19690 ECharts,一个纯 ...