zoukankan      html  css  js  c++  java
  • DataVeryLite入门教程(一) 配置篇

    DataVeryLiteDataVeryLite 是基于.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).
     
    DataBaseConnection String sampleproviderName
    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);
       }
    }

     

  • 相关阅读:
    图像检索(image retrieval)- 11
    图像检索(image retrieval)- 10相关
    Mock.js简易教程,脱离后端独立开发,实现增删改查功能
    Azure Monitor (3) 对虚拟机磁盘设置自定义监控
    Azure Monitor (1) 概述
    Azure SQL Managed Instance (2) 备份SQL MI
    Azure Virtual Network (17) Private Link演示
    Azure Virtual Network (16) Private Link
    Azure Virtual Network (15) Service Endpoint演示
    Azure Virtual Network (14) Service Endpoint服务终结点
  • 原文地址:https://www.cnblogs.com/shuqizhao/p/3695107.html
Copyright © 2011-2022 走看看