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

背景:

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

 

解决:

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

 

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

 

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

 

 

实战如下:

 

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格式数据):

 

 

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

 

 

示例就到这里结束了。

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

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

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

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

 

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


版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:http://www.cnblogs.com/cyq1162/p/3213531.html

时间: 2024-09-23 14:46:00

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

最近花了几个夜晚帮师妹整了一个企业网站

背景: 话说年前有个师妹泪眼汪汪,楚楚动情地找我帮她弄个企业网站. 不过那时候,每天都苦B地闪着:"加班中,相信不用多久升职加薪,当上总经理,出任CEO,迎娶白富美,走上人生巅峰,想想还有点小激动呢". 所以每夜都懒懒地累到不想动,一直拖延到年后,回到广州才动有了写代码的冲动. 想想毕竟是自家师妹,承诺过的还是要还的,所以打算认真负责的花些时间把它整出来.   技术选型: 1:时间考量:  首先这是一个义务型的网站,所以会考虑时间不能占用太多, 尽量满足基础功能,比较异想天开的功能先忽

绘制草图梳理与表达想法:草图原型实战技巧

五年时间转瞬即逝,在自己小窝的最后一个周末;眼看着家当和心情都被打包的差不多了,整个人却终于感冒发烧腹泻垮了下来,这是闹哪样呢.所幸本周前面几天可以抽出些时间做掉这篇译文,今天发掉先.接下来的两个月,大概要集中业余零散精力放在一本iOS书的翻译上了;希望还能有些时间分给这边.杂七杂八就到这里,我们直接进入正文--草图原型实战技巧,没有务虚的大道理,每个内容要点都很实用.走着. 在如今的用户体验及产品圈子里,越来越多的人开始了解到草图及相关的原型工作对于整个设计流程的重要意义;不过在实际工作中,真

Winform 通用分页控件实战篇(提供源码下载)

在Web中,以前写过相关的分页控件的实例教程,如: 分页控件 实战 Post篇 (包源码的)   在Winform中,分页有时候也是必不可少的一项,因此, 新手Mark一下有时候是必要的.   下面开始简单介绍一下:   既然是分页控件,说明它是个控件,因此,继承控件继承自用户控件如下:  public partial class PagerControl : UserControl  {         #region 构造函数         public PagerControl()   

《DB2性能管理与实战》——2.6 DB2 pureScale环境中内存管理

2.6 DB2 pureScale环境中内存管理 DB2性能管理与实战 本节将要介绍与pureScale特性相关的内存管理,可以对比前面的单节点环境下的内存管理,来分析它们之间的异同点.本节为学习后续章节中的相关案例奠定了基础. 2.6.1 集群高速缓存设施 在DB2 pureScale环境中,又引入了集群高速缓存设施(CF),CF将不同内存堆用于以下用途. 1.组缓冲池内存 组缓冲池内存被用于DB2pureScale实例的组缓冲池.如果以一致方式将此类型的内存用至最大已配置能力,那么可能会对性

Visual Studio跨平台开发实战(2) - Xamarin.iOS基本控制项介绍

原文 Visual Studio跨平台开发实战(2) - Xamarin.iOS基本控制项介绍 前言 在上一篇文章中, 我们介绍了Xamarin 以及简单的HelloWorld范例, 这次我们针对iOS的专案目录架构以及基本控制项进行说明. 包含UIButton,, UISlider, UISwitch, UIImage以及UIWebView控制项. iOS的使用者介面描述档, 其副档名为.xib, 目前在Visual Studio尚未支援直接编辑. 因此在文章中, 我们会先用Xamarin S

《Android 网络开发与应用实战详解》——1.3节搭建Android应用开发环境

1.3 搭建Android应用开发环境 Android 网络开发与应用实战详解 "工欲善其事,必先利其器"出自<论语>,意思是要想高效地完成一件事,需要有一个合适的工具.对于安卓开发人员来说,开发工具同样至关重要.作为一项新兴技术,在进行开发前首先要搭建一个对应的开发环境.而在搭建开发环境前,需要了解安装开发工具所需要的硬件和软件配置条件. 注意 Android开发包括底层开发和应用开发,底层开发大多数是指和硬件相关的开发,并且是基于Linux环境的,例如开发驱动程序.应用

《Netty实战》Netty In Action中文版——文前内容

<Netty实战>样章由人民邮电出版社授权并发编程网发布,本书的中文版已经由人民邮电出版社引进并出版. 京东预售链接(优先发货):<Netty实战>([美]诺曼·毛瑞尔(Norman Maurer),马文·艾伦·沃尔夫泰尔(Marvin Allen Wolfthal))   内容提要 本书是为想要或者正在使用Java从事高性能网络编程的人而写的,循序渐进地介绍了Netty各个方面的内容. 本书共分为4个部分:第一部分详细地介绍Netty的相关概念以及核心组件,第二部分介绍自定义协议

CoreOS 实战:剖析 etcd

CoreOS 实战:剖析 etcd 1. 概述 etcd 是一个应用在分布式环境下的 key/value 存储服务.利用 etcd 的特性,应用程序可以在集群中共享信息.配置或作服务发现,etcd 会在集群的各个节点中复制这些数据并保证这些数据始终正确.etcd 无论是在 CoreOS 还是 Kubernetes 体系中都是不可或缺的一环.笔者由于项目的原因对 etcd 进行了一些了解,也已经使用了一段时间.同时在与同行的交流中常被问到 etcd 是什么.与 ZooKeeper 有什么不同.那么

90天成功打造网站实战经验记实之——网站策划篇

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 前2天在A5发了篇"3个月 成功打造网站实战经验记实",是在群里朋友的要求下的写的感想,时间比较急就把三部分一起笼统的写了一遍很多站长朋友看了后都表示很大的关注和好奇,希望我能写得详细点,应各位站长朋友的要求我决定分成几部分详细的把自己的经验和总结在写一遍今天要写的是<网站策划篇>. 网站策划是一项比较专业的工