今天 发现 新大陆了...正如你所看到的。。。。是的,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之类的烦恼。我们也不需要仓库设计模式了,你妹的。不要表了,不要设计数据库字段了。就这样!