CodeFirst实战:用文本数据库存档软件配置

简介:

背景:


以前要写软件的时候,在编写用户配置这一块时,由于存档数据库不靠谱或大题小作,所以一般是存在文本中。
一开始是一个文件保存一个配置(图个File.Read与File.Write的操作简单)
由于软件经常升级,用户的配置也会不停的增加,又得兼容以前,又要新增加,之后的配置又用了分隔与换行来来保存多条配置。
重复多了之后,多少感觉到麻烦~~~



解决:


所以,对于DBImport,你看早期的版本,对于用户的数据库链接,也没保存配置,说白了就是懒啊。
后来有用户反应要增加,加之CYQ.Data的文本数据库功能相对越来越完善,以及使用上也方便了,所以就增加上去了。



所以今天就以这个为实例,讲解一下是怎么方便法:


对于DBImport来说,有两个输入框,为了方便存档及下次启动,需要保存下并于下次启动时还原:

25031649-590a3e694ac44982b9138aa9be5f95a


实战如下:


1:用入CYQ.Data.dll V5版本的。

2:CodeFirst编写个实体:

class Config : CYQ.Data.Orm.OrmBase
   {
public Config()
       {
base.SetInit( this" Config "" txt path={0};ts=0 ");
       }
private int ID{get;set;}
private string Key{get;set;}
public string Value{get;set;}
   }

说明:

表名:Config;

{0}:代码根目录,即软件运行目录;

ts=0:新增的识别参数,不创建Config.ts的表结构文件。


3:接下来就是按钮点击事件成功后,把数据为链接保存:

// 保存链接字符串。
using (Config config =  new Config())
                   {
if (config.Fill( " key='ConnFrom' "))
                       {
                           config.Value = connFrom;
                           config.Update();
                       }
else
                       {
                           config.Key =  " ConnFrom ";
                           config.Value = connFrom;
                           config.Insert(InsertOp.None);
                       }
                   }

如果链接已存在,就是更新,如果不存在,就是插入了。


4:软件初运行的时候检测数据是否存在,并设置初始值还原:

   using (Config config =  new Config())
           {
if (config.Fill( " Key='ConnFrom' "))
               {
                   txtConnFrom.Text = config.Value.ToString();
               }
if (config.Fill( " Key='ConnTo' "))
               {
                   txtConnTo.Text = config.Value.ToString();
               }
           }


5:一切就绪,F5运行后,软件目录下就多了一个文件(文本数据存存档json或xml格式数据):

25033123-d613335cf93748bcbf0739f105e42cd


这里提一下,如果文本数据库链接不指定ts=0,在同一目录下会创建数据库结构:

25033724-97df2787b2ae4f4080380e2f1a4406c


示例就到这里结束了。


对于CodeFirst,是支持所有数据库,但是又有些许区别:

如果是对于sqlite,mssql,oracle,mysql等,由于数据是肯定是存到数据库的,所以CodeFirst编码运行后,肯定是会创建表结构到数据库中,才能存储数据。

意思就是,如果有数据库字段变化,可能需要到数据库里修改对应的字段;

而文本数据库,如果是增加或减少属性字段,则完全无事,如果是删除或修改字段名称,如果字段的数据不要,则也无事,如果原字段数据需要,自己打开事本,批量替换一下,也是相当方便。



总体来说,个人觉的CodeFirst的操作方式,还是文本数据库来的实在与方便~~~ 而其它数据库,虽然如果中间变更,还是要变更,那就又回到CodeLast了。。。








     本文转自cyq1162 51CTO博客,原文链接:http://blog.51cto.com/cyq1162/1256647
,如需转载请自行联系原作者




相关文章
|
5天前
|
Oracle 关系型数据库 数据库
实时计算 Flink版产品使用合集之用于实时同步整个数据库时,该如何配置DB2
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
28 5
|
4天前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之可以通过配置Oracle数据库的schema注册表来监测表结构的变化吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
12 1
|
6天前
|
SQL 数据库
数据库SQL语言实战(六)
本次实战的重点就在于对表格本身的一些处理,包括复制表格、修改表格结构、修改表格数据
|
6天前
|
SQL Oracle 关系型数据库
数据库SQL语言实战(五)(数据库系统概念第三章练习题)
本文的SQL语言适用的是Oracle数据库与mySQL可能存在略微不同
|
6天前
|
SQL Oracle 关系型数据库
数据库SQL语言实战(四)(数据库系统概念第三章练习题)
本文的SQL语言适用的是Oracle数据库与mySQL可能存在略微不同
数据库SQL语言实战(四)(数据库系统概念第三章练习题)
|
6天前
|
SQL Oracle 关系型数据库
数据库SQL语言实战(三)
本篇文章重点在于SQL中的各种删除操作
|
6天前
|
负载均衡 关系型数据库 MySQL
关系型数据库的安装和配置数据库节点
【5月更文挑战第5天】关系型数据库的安装和配置数据库节点
131 3
关系型数据库的安装和配置数据库节点
|
6天前
|
存储 NoSQL 关系型数据库
MongoDB非关系型数据库实战
【5月更文挑战第6天】MongoDB,流行的NoSQL数据库,以其灵活的数据模型和高性能备受青睐。本文介绍了MongoDB的基础,包括文档型数据库特性、安装配置、数据操作。通过电商订单管理的实战案例,展示了MongoDB在处理复杂数据结构和大规模数据时的优势,适用于电商、游戏、视频直播等场景。MongoDB的索引、全文搜索和地理空间功能进一步增强了其实用性。注意性能优化和扩展性以确保系统稳定性和可靠性。
|
6天前
|
缓存 关系型数据库 MySQL
MySQL数据库性能优化实战
【4月更文挑战第30天】本文探讨了MySQL性能优化实战技巧,包括硬件与配置优化(如使用SSD、增加内存和调整配置参数)、索引优化(创建合适索引、使用复合索引及定期维护)、查询优化(避免全表扫描、减少JOIN和使用LIMIT)、分区与分片(表分区和数据库分片),以及使用缓存、定期清理数据库和监控诊断。通过这些方法,可以提升数据库性能和响应速度。
|
6天前
|
存储 负载均衡 容灾
软件体系结构 - 关系数据库(4)分区
【4月更文挑战第27天】软件体系结构 - 关系数据库(4)分区
27 1