礼拜天共从而文件数据库玩玩Code First

尚记,旧旧前发表过一样篇稿子:文件数据库–.Net界未来的同一朵奇葩,引爆跨百条的褒贬,表达我们对文件数据库,还是情有所属的。

由此多年之沉淀,在文书的操作上,已经有矣把规模,由此,本文写出来与大伙儿分享一下。

 

一:Code First 开始:

 

1:下载CYQ.Data V5,下载地址:http://www.cyqdata.com/download/article-detail-426

2:解压就一个dll,项目增长引用即可。

3:既然是Code First,这我们即便径直写实体类,示例如下:

    public class Users : CYQ.Data.Orm.OrmBase

    {

        public Users()

        {

            this.SetInit(this, “Users”, “Txt Path={0}”);

        }

        public int ID {get;set;}

        public string UserName {get;set;}

        public string Password {get;set;}

    }

 

证实六个点:

1,继承自OrmBase;

2,构造函数里指定表名“Users”和数据库链接(Txt Path={0})。

 

数据库链接验证({0}代表根目录):

文本数据库(json存储方):Txt Path={0}

Xml数据库(xml存储方) :Xml Path={0}

别数据库,就是各国数据库的链接了要安排起了。

 

OK,现在就足以实操增删改查了,下边轻轻的称一下。

 

第二:Code First 代码实例

 

1:插入与更新代码和图如下:

图片 1

 

代码表明:

左侧是充实及立异的代码,右边是同一大概的演示操作winform界面,那里发出有限要害表达。

1:为什么实体类设就此using包含操作?

于文本的操作,内部机制是以内存操作的,直到调用Disponse,才写到文本,由此,用using就是以毕时调用Disponse写到文件去之。

2:SetAutoParentControl是呀东东?

当控件名以约起名:为3许母+属性名,如txtUserName,txtPassword时,可以使用电动获取值法,

这么您拉N个控件上去,代码也无须转的。

传进this就是form本身,orm会遍历form下的控件举行取值。

 

2:对于此外Orm效用,暂不详写了,下载里出api文档表明,这里仅仅排有接口:

 /// <summary>

    /// 数据操作公共接口

    /// </summary>

    /// <typeparam name=”T”></typeparam>

    internal interface ICommon:IDisposable

    {

        bool Insert();

        bool Insert(InsertOp option);

        bool Insert(bool autoSetValue);

        bool Insert(bool autoSetValue, InsertOp option);

        

        bool Update();

        bool Update(object where);

        bool Update(object where, bool autoSetValue);

        bool Delete();

        bool Delete(object where);

     

        bool Fill(object where);

        MDataTable Select();

        MDataTable Select(string where);

        MDataTable Select(int topN, object where);

        MDataTable Select(int pageIndex, int pageSize, string where, out
int count);

        int GetCount(string where);

        bool Exists(string where);

        #region UI接口

        void GetFrom(object control);

        void GetFrom(object control, object value);

        bool GetFromJson(string jsonOrFileName);

        void SetAutoParentControl(object parent, params object[]
otherParent);

        void SetAutoPrefix(string autoPrefix, params string[]
otherPrefix);

        void SetSelectColumns(params object[] columnNames);

        void SetTo(object control);

        void SetTo(object control, object value, bool isControlEnabled);

        void SetTo(object control, object value);

        void SetToAll(params object[] parentControls);

        #endregion

        string TableName { get; set; }

        string DebugInfo { get; }

    }

 

其三:基础表明解答

 

1:表从哪来、数据存哪?

系统在伊始化时,会基于表名和链接的地点,会因性名称自动生成相应的表结构在地点目录,并且为json或xml模式囤数据。

 

2:where支持sql?

襄助的,然而对此txt,xml,内置实现了最基础的sql解析,可以满意>,>=,<,<=,=,is null,is not null,like,order by 等主导本询,不襄助之爆发:函数,或group by等话。

 

3:实用场景

 

突发性,数据并无雅,用access太纠心,用sqlite服务器安全设置以非同意,用mssql又以为杀牛不用牛刀,这txt,xml就该入手了。
情景同样:比如同大概的部署文件,你写单实体类,就得轻松的操作了,不用盖啥数据库表 。
现象二:Code First的目标,当您得快速构建代码时,直接就是用txt就上了,然后工作代码就可以伊始写了,不用等DBA建完库。
晚可因需要,修改web.config的链接转至mssql,mysql,oracle等数据库,业务代码不移的哎。
本来矣,this.SetInit(this, “Users”, “Conn”);应该如此写,对应webconfig的Conn配置起。
此情此景三:对于wp7开发,间接操作txt,仍旧好合理的。

 

 

4:多数据库兼容性

用过

CYQ.Data的恋人还晓得,襄助多数据库是丰富轻松过度的,现在你玩txt,轻松转换下链接就是顶mssql等其余数据库了,所以戏好一个,另外数据库同样是匹配的。

感兴趣之爱人,可以打同样嬉戏,过过Code First的瘾!!!

 

网站地图xml地图