zoukankan      html  css  js  c++  java
  • NDatabase 入门,简单使用 增删改查。让NDatabase带你脱离ADO.net,各种SQL 语句,各种DBMS,各种CRM,IOC之类的烦恼。我们也不需要仓库设计模式了,你妹的。不要表了,不要设计数据库字段了。就这样!

    今天 发现 新大陆了...正如你所看到的。。。。是的,NDatabase,

    以后 .net 可能因此 变得 更强大,更富有生命力

    为什么需要NDatabase。。。。因为很多原因。。。

    从此 在很多时候,你很可能不需要 IOC,ORM,ADO.net,SQL语句,各种DBMS。。。。。也不需要建表。。。。为字段长度设计而烦恼。。。各种烦恼。

    这篇文章 是 我看到院子里面 这家伙的文章发现的。。。

    http://www.cnblogs.com/asxinyu/archive/2013/02/20/2918066.html

    。。。。。感谢他。(感谢一楼同学提醒,使得我补充了 修改数据的代码)

    这篇文章没有什么深奥的东西,只是很简单的一些东西。

    或者说很肤浅,只有很简单的增删改查。

    上代码——模型:

     public class UserModel
        {
            public string Name;
            public string Password;
            public string Email;
            public string QQ;
            public string Phone;
            public DateTime RegistTime;
            public DateTime LastLoginTime;
            public DateTime CurrentLoginTime;
        }

    上代码——简单包装一下:

    public class DB
        {
            public static string DBName="DB.db";
    
            public static IOdb Open()
            {
                return OdbFactory.Open(DBName);
            }
        }

    上代码——简单查询:

    using (var db = DB.Open())
                    {
                       var query= db.Query<UserModel>();// 生成一个查询
                        query.Descend("Email").Constrain(usermodel.Email).Equal();// 查询Email属性是否等于usermodel.Email对象的值
                        if(query.Execute<UserModel>().Count == 0)// 执行查询
                        {
                             db.Store<UserModel>(usermodel);// 保存usermodel对象。
                         }
                   }

    上代码-查询:

    //这是我项目里面登录代码的一部分逻辑。。。
    using (var db = DB.Open())
                    {
                        var query = db.Query<UserModel>();
                        query.Descend("Name").Constrain(umodel.Name).Equal().And(query.Descend("Password").Constrain(umodel.Password).Equal());//这里是查询有没有用户名和密码相同的对象
    
                        if (query.Execute<UserModel>().Count > 0)//结果是否大于0
                        {
                            FormsAuthentication.SetAuthCookie(model.Name, model.RememberMe);//Form验证。。。
                            RedirectToAction("Index");
                        }
                        else
                        {
                            RedirectToAction("Login");
                        }
                    }

     上代码-删除:

    //删除就是Delete。。。。
    //具体不写了,看看官方的例子吧,很简单就是了。。。。

    如你所见,这里没有很多分层,事实上,一起都变得简单了很多。。。

    Ndatabase在使用的时候,不需要建库,不需要建表,建库只需要Open(文件路径)。建表只需要把一个对象Store。。。就ok了。。。

    速度,性能。。。?我想几乎比常用的DBMS都要好。当然随着数据量的增大,我还没有测过。。。

    调用很方便,原生C#,只需要一个dll。。。。

    事实上,这要比SQLite要好很多。。。

    这个项目貌似是2012年年底刚出现的,就在Codeplex上面。支持PC,Sliverlight,WP。

    无论如何,这个项目的出现虽然暂时无法 撼动 关系型数据库的地位,但是,至少是有力的一击。对象数据库 在.net 上又迈出了一步。

    为何要支持对象数据库?因为,如果你是码农,那么对象数据库的出现就好像是现代化农业。。。你要做的就是操作操作一些农用机器,管理大面积的土地,而不是像从前,拿着锄头,钉耙,铲子,铁犁这些。。。

     补充:更新(修改)和删除的代码:

    //*************修改数据的例子**************这里代码的例子与上面的不同,这里的来自官方,被我稍作修改
    using (var odb = OdbFactory.Open("DB.db"))//打开数据库
    {
    IList<Warrior> warriors = odb.Query<Warrior>().Execute<Warrior>().ToList();//首先检索出来(当然这里检索的时候你也可以自己加检索条件)
    
    warriors[0].RightHand = sword1;//修改字段的值
    warriors[0].LeftHand = field1;//修改字段的值
    
    warriors[1].RightHand = sword2;//修改字段的值
    warriors[1].LeftHand = field2;//修改字段的值
    
    odb.Store(warriors[0]);//调用Store方法把更改的对象重新持久化到文件里面
    odb.Store(warriors[1]);//调用Store方法把更改的对象重新持久化到文件里面
    }
    
    //哦,就是这么简单。。。
    
    
    //*************顺便加一下删除的例子吧**************这里代码的例子与上面的不同,这里的来自官方,被我稍作修改
    
    using (var odb1 = OdbFactory.Open("DB.db"))//打开数据库
    {
        IList<Warrior> warriors = odb1.Query<Warrior>().Execute<Warrior>().ToList();//还是一样,先检索出来(当然这里检索的时候你也可以自己加检索条件)
    
        odb1.Delete(warriors[0]);//是的直接调用Delete方法,删除之就ok了
        odb1.Delete(warriors[1]);//是的直接调用Delete方法,删除之就ok了
    }

    好吧,感谢一下一楼的 Quella 同学的提醒。。。。

    让我好好享受 这个数据库给我们带来的便捷吧。。。。

    让NDatabase带你脱离ADO.net,各种SQL 语句,各种DBMS,各种CRM,IOC之类的烦恼。我们也不需要仓库设计模式了,你妹的。不要表了,不要设计数据库字段了。就这样!



  • 相关阅读:
    dubbo-Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError
    sqlmap基本命令
    Read-Only Tables 只读表
    Oracle Set操作
    OGG-00664
    Oracle 附加日志(supplemental log)
    Oracle 数字转为字符串 to_char()
    Oracle单引号转义符
    OGG开启DDL,约束信息和索引信息会同步过去吗
    OGG-01161
  • 原文地址:https://www.cnblogs.com/SHGF/p/2968432.html
Copyright © 2011-2022 走看看