• 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);
       }
    }

     

  • 相关阅读:
    cocoapods 命令
    开发常用
    ios 定位
    LoadingView
    自定义cell右侧 多按钮
    cocoaPods
    AFNetWorking
    iphone自定义铃声
    升级为iOS9后,默认请求类型为https,如何使用http进行请求会报错(引用他人的)
    理解c语言中的指针
  • 原文地址:https://www.cnblogs.com/shuqizhao/p/3695107.html
Copyright © 2020-2023  润新知