周末一起用文本数据库玩玩Code First

简介:

还记得,旧旧前发布过一篇文章:文本数据库--.Net界未来的一朵奇葩,引爆超过百条的评论,说明大伙对文本数据库,还是情有所属的。

经过多年的沉淀,在文本的操作上,已经有了些规模,因此,本文写出来和大伙分享一下。

 

一:Code First 开始:

 

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:插入与更新代码和图如下:
 

代码说明:

复制代码
左侧是增加和更新的代码,右侧是一简单的示例操作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的瘾!!!
版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:
http://www.cnblogs.com/cyq1162/archive/2012/06/10/2543960.html
相关文章
|
4月前
|
存储 自然语言处理 搜索推荐
ChatGPT 文本Embedding融合Qdrant向量数据库:构建智能问答系统的技术探索
向量数据库结合ChatGPT带来了什么 1. **语义搜索:** 使用向量数据库进行语义搜索,可以更准确地找到与查询相关的信息。ChatGPT可以理解用户的自然语言查询,而向量数据库可以根据语义相似性返回匹配的向量数据。 2. **智能推荐:** 结合ChatGPT的智能理解和向量数据库的相似性搜索,可以实现更智能的推荐系统。系统可以根据用户的历史行为和语境,向用户推荐相似的向量数据,如文章、产品或其他内容。 3. **自然语言处理与向量表示结合:** ChatGPT可以将自然语言转换为向量表示,这样就可以在向量数据库中进行更高效的查询。这种集成使得自然语言处理和向量数据库可以相互补充等
364 0
|
7月前
|
人工智能 关系型数据库 分布式数据库
沉浸式学习PostgreSQL|PolarDB 16: 植入通义千问大模型+文本向量化模型, 让数据库具备AI能力
本文将带领大家来体验一下如何将“千问大模型+文本向量化模型”植入到PG|PolarDB中, 让数据库具备AI能力.
23579 18
沉浸式学习PostgreSQL|PolarDB 16: 植入通义千问大模型+文本向量化模型, 让数据库具备AI能力
|
1月前
|
存储 SQL 数据库
C# 将 Word 转文本存储到数据库并进行管理
C# 将 Word 转文本存储到数据库并进行管理
|
10月前
|
开发框架 Oracle 关系型数据库
关于vs2008使用oracleclient链接oracle数据库报报错OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用
用vs2008链接oracle数据库出现问题,报错OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用,从网上找了好久方法,有两种oracle客户端文件权限,和运行vs2008以管理员身份,这些都试过了没有用,查了好久还是没有解决问题,只好换一种方式链接oracle数据了。
340 0
|
XML SQL JSON
Spring-Batch读取数据 文本数据 数据库数据 XML数据 JSON数据
Spring-Batch读取数据 文本数据 数据库数据 XML数据 JSON数据
Spring-Batch读取数据 文本数据 数据库数据 XML数据 JSON数据
|
XML JSON Java
Spring Batch输出文本数据 XML数据 JSON数据 数据库
Spring Batch输出文本数据 XML数据 JSON数据 数据库
|
存储 Java 关系型数据库
Java使用JDBC向数据库存取大文本(比如小说等)
Java使用JDBC向数据库存取大文本(比如小说等)
213 0
Java使用JDBC向数据库存取大文本(比如小说等)
|
数据库
LeetCode(数据库)- First and Last Call On the Same Day
LeetCode(数据库)- First and Last Call On the Same Day
84 0
|
存储 Java 大数据
MySQL---数据库从入门走向大神系列(九)-用Java向数据库读写大文本/二进制文件数据
MySQL---数据库从入门走向大神系列(九)-用Java向数据库读写大文本/二进制文件数据
230 0
MySQL---数据库从入门走向大神系列(九)-用Java向数据库读写大文本/二进制文件数据

热门文章

最新文章