DataVeryLite入门教程(一) 配置篇

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

?





1

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入门教程(一) 配置篇,布布扣,bubuko.com

时间: 2024-12-19 04:01:02

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

DataVeryLite入门教程(二) Entity篇

DataVeryLite 是基于.net 4.0的数据库持久化ORM框架. 目前支持的数据库有Sqlserver,Mysql,Oracle,Db2,PostgreSql,Sqlite和Access. 最好先阅读DataVeryLite入门教程(一) 配置篇,然后再阅读本篇.如果你觉得麻烦也可以跳过. Entity是ORM中的核心对象之一,一个继承Entity的对象对应于数据库中的一个表. Entity提供丰富的API对表中的单条数据进行操作. 比如根据id或其他条件,加载,删除,插入,更新和部分

Systemd 入门教程:实战篇

Systemd 入门教程:实战篇 上一篇文章,介绍了 Systemd 的主要命令,这篇文章主要介绍如何使用 Systemd 来管理我们的服务,以及各项的含义: 一.开机启动 对于那些支持 Systemd 的软件,安装的时候,会自动在/usr/lib/systemd/system目录添加一个配置文件,如果你想让该软件开机启动,就执行下面的命令(以httpd.service为例). $ sudo systemctl enable httpd 上面的命令相当于在/etc/systemd/system目

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

Systemd 入门教程:命令篇 Copy From http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html 感觉是一个非常好的入门教程 Systemd 是 Linux 系统工具,用来启动守护进程,已成为大多数发行版的标准配置. 本文介绍它的基本用法,分为上下两篇.今天介绍它的主要命令,下一篇介绍如何用于实战. 一.由来 历史上,Linux 的启动一直采用init进程. 下面的命令用来启动服务. $ sudo /

Linux Capabilities 入门教程:概念篇

原文链接:Linux Capabilities 入门教程:概念篇 Linux 是一种安全的操作系统,它把所有的系统权限都赋予了一个单一的 root 用户,只给普通用户保留有限的权限.root 用户拥有超级管理员权限,可以安装软件.允许某些服务.管理用户等. 作为普通用户,如果想执行某些只有管理员才有权限的操作,以前只有两种办法:一是通过 sudo 提升权限,如果用户很多,配置管理和权限控制会很麻烦:二是通过 SUID(Set User ID on execution)来实现,它可以让普通用户允许

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

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

最全面 Nginx 入门教程 + 常用配置解析

转自 http://blog.csdn.net/shootyou/article/details/6093562 Nginx介绍和安装 一个简单的配置文件 模块介绍 常用场景配置 进阶内容 参考资料 == Nginx介绍和安装 == Nginx是一个自由.开源.高性能及轻量级的HTTP服务器及反转代理服务器, 其性能与IMAP/POP3代理服务器相当.Nginx以其高性能.稳定.功能丰富.配置简单及占用系统资源少而著称. Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx

WebGL入门教程第1篇——六色立方

WebGL入门教程第1篇——六色立方 WebGL,一项允许开发人员在浏览器里操纵GPU来显示图形的技术.让我们一起走进WebGL的世界. 读者对象 本系列适合具有基础JavaScript知识的开发人员. 准备工作 我们应该在本地搭建好web服务器,或者安装了具有预览功能的IDE.如果你安装了Visual Studio,Nivk童鞋为我们开发了WebGL代码提示功能,你可以通过以下步骤使Visual Studio支持WebGL代码提示:打开Visual Studio——点击工具——点击选项——展开

Flex3与java BlazeDS入门教程及其配置详解

原文:Flex3与java BlazeDS入门教程及其配置详解 源代码下载地址:http://www.zuidaima.com/share/1789445387160576.htm BlazeDS的下载和介绍: http://opensource.adobe.com/wiki/display/blazeds/Release+Builds(已经失效) 新的下载路径:http://sourceforge.net/adobe/wiki/Projects/或是http://www.pc6.com/sof

[Linux] Systemd 入门教程:命令篇

reference : http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html Systemd 是 Linux 系统工具,用来启动守护进程,已成为大多数发行版的标准配置. 本文介绍它的基本用法,分为上下两篇.今天介绍它的主要命令,下一篇介绍如何用于实战. 一.由来 历史上,Linux 的启动一直采用init进程. 下面的命令用来启动服务. $ sudo /etc/init.d/apache2 start # 或者