C# SQLite数据库三层架构 动态生成数据库

三岁儿 2020-10-21 05:03:24
C# SQLite数据库三层架构 动态生成数据库
...全文
2857 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
在我们开发 ORM 的年代,或者类似微软刚开始开发 EF 的年代,都知道,只要给一个对象声明 Attribute 就能自动进行 DAL 操作。例如泛型
CreateTable<销售明细>();
就能产生或者更新升级数据库表,操作
var result = (from x in context.Table<销售明细>()
where x.商品编码=="123456" and x.时间戳>20101009
select new{ x.商品编码, x.单价, x.金额}).ToList();
就能查询出来结果。

也就是说,DAL层(数据操作层)框架是现成的通用的,从 ADO.NET、SQLHelper 到各种性能尚可的 ORM 技术,都是 DAL。至于说要程序员去很 low 地去对每一个关系数据库表的“增删改查”写个什么 DAL 方法,这种是 struct 引入的垃圾做法,没有什么效益只不过在当年 java 跟微软系列工具竞争时洗了不少蛊惑人心的书籍而已。
  • 打赏
  • 举报
回复
其实有些的东西没有多少技术含量,“以测试为准”,以经验效率为先。以前强调的一些理念,如果你没有核心技术去真正实践,那么就应该放弃。如果你需要封装一个 api 方法,例如“读取集团一小时的所有POS点数据”这样一个功能,那是因为它非常重要,需要 BLL 封装。至于说你把每一个数据表的“增删改查”最 low 的语句单独封装为一个 api 方法,即使是说你们没有做过一个系统有几百个数据表的那种稍微大一点的系统,这种所谓的“为了名义上的三层而胡乱组织三层架构”的做法的也是整天纠结在底层浪费了大量时间大量经费,没有对“BLL、通讯、前端现场快速开发应用”等等真正需要技术的地方下功夫。
  • 打赏
  • 举报
回复
引用 3 楼 三岁儿 的回复:
[quote=引用 1 楼 正怒月神的回复:]

就是用三层把方法都已经封装好了,但是要生成数据库表,对接数据库[/quote]

三层架构是个设计理念,而不要搞成具体的“八股文式架构”。DAL 适宜设计为一个“通用的”框架,也就是说是独立的,可以是先有 DAL,现有 SQLHelper,后有 BLL。在各个 BLL 方法中调用 DAL,而不是说 BLL 作为 DAL 的父类。如果本末颠倒会出现什么后果?实际上就会自以为“把方法都封装好了”,结果遥遥无期,随着千变万化的系统功能需求进化,你们会把大量精力扯到纠缠DAL上,就好像整天研究“鸡窝怎样搭建、回字有多少种写法”,原本2天能干完的额活儿非要用1整年的时间去纠结。

生成数据库表就是使用简单的 sql 语句调用关系数据库的 DDL 语句就行了。BLL 层代码调用 DAL 层代码,而DAL用于各种 BLL 中可以被调用的通用框架,而不是什么本末倒置地“封装”一堆从 BLL 概念继承出来的所谓的 DAL。
三岁儿 2020-10-22
  • 打赏
  • 举报
回复
引用 8 楼 医手的回复:
正常来说是先有数据库表,然后自动生成c#三层代码。 而不是先有C#三层代码,再生成数据库表
helper.cs bll dal 里面的方法都有,只需要添加字段名称即可
三岁儿 2020-10-22
  • 打赏
  • 举报
回复
helper.cs bll dal 里面的方法都有,只需要添加字段名称即可
医手 2020-10-22
  • 打赏
  • 举报
回复
正常来说是先有数据库表,然后自动生成c#三层代码。 而不是先有C#三层代码,再生成数据库表
三岁儿 2020-10-22
  • 打赏
  • 举报
回复
引用 6 楼 Bridge_go的回复:
要实现orm?
对,和ef有点类似,可以动态修改属性和数据内容,求指导
三岁儿 2020-10-22
  • 打赏
  • 举报
回复
引用 19 楼 icoolno1 的回复:
[quote=引用 16 楼 三岁儿 的回复:][quote=引用 14 楼 icoolno1的回复:]写几个函数调用数据库的ddl即可。

这个我知道呀,就是不会嘛,所以才想问[/quote]

无非就是alter/create/drop table add/drop/alter column等等定义语句,具体写法查下相应的Sql手册,程序里执行Command.ExecuteNonQuery[/quote]
是的,但是方法封装的不一样,只需要传表名字段名
八爻老骥 2020-10-22
  • 打赏
  • 举报
回复
引用 16 楼 三岁儿 的回复:
[quote=引用 14 楼 icoolno1的回复:]写几个函数调用数据库的ddl即可。

这个我知道呀,就是不会嘛,所以才想问[/quote]

无非就是alter/create/drop table add/drop/alter column等等定义语句,具体写法查下相应的Sql手册,程序里执行Command.ExecuteNonQuery
三岁儿 2020-10-22
  • 打赏
  • 举报
回复
引用 17 楼 快乐起航2020的回复:
DAL 和bll都创建一个项目吧还有UI
都有的,在dal中的参数为表名
快乐起航2020 2020-10-22
  • 打赏
  • 举报
回复
DAL 和bll都创建一个项目吧还有UI
三岁儿 2020-10-22
  • 打赏
  • 举报
回复
引用 14 楼 icoolno1的回复:
写几个函数调用数据库的ddl即可。
这个我知道呀,就是不会嘛,所以才想问
三岁儿 2020-10-22
  • 打赏
  • 举报
回复
引用 11 楼 程哈哈,的回复:
啊哈??你知道啊?求指导
八爻老骥 2020-10-22
  • 打赏
  • 举报
回复
写几个函数调用数据库的ddl即可。
三岁儿 2020-10-22
  • 打赏
  • 举报
回复
引用 11 楼 程哈哈,的回复:
请问你知道吗,求指导??
三岁儿 2020-10-22
  • 打赏
  • 举报
回复
请问你知道吗,求指导!!
  • 打赏
  • 举报
回复
Bridge_go 2020-10-21
  • 打赏
  • 举报
回复
要实现orm?
三岁儿 2020-10-21
  • 打赏
  • 举报
回复
引用 1 楼 正怒月神的回复:
用sqlite做一个模拟测试
三岁儿 2020-10-21
  • 打赏
  • 举报
回复
引用 2 楼 ∽油条á的回复:
厉害咯 ……
是没讲清楚吗
加载更多回复(3)
SocanCode是一个能帮助软件开发人员自动生成代码的工具。内置了C#三层结构模板,存储过程模板,使用它可以省去众多繁琐的重复工作,让开发人员把精力集中在业务逻辑上,大量减少重复劳动。让开发更便捷! 1、纯绿色软件,无需安装 2、支持Advantage、Asa、Ase、DB2、Firebird、Mimer、MySql、NexusDB、OleDb、Oracle、PervasiveSql、PostgreSql、SQLite、SqlServer、SqlServerCe、Teradata、VistaDB、Pdm数据文件等连接 3、全模板化的代码生成器,轻松修改即可实现自定义各种编程语言模板、支持代码批量输出 4、内置一套强大的C#三层架构模板,此模板支持生成简单三层及工厂模式三层,支持生成VS2005/2008/2010/2012解决方案、支持生成缓存代码、支持生成分页代码 5、内置一套MySql和SqlServer的存储过程模板 6、支持直接执行SQL语句 7、内置代码转模板、C#转VB等小工具,更多功能开发中... 8、可以生成数据库文档:可生成Html、Word、Pdf 以及数据建表句(在SqlServer上测试有效) 9、CSharp金泽宽改进增强版:可生成WinUI、WebUI、JsonWebUI等。 10、用CSharp金泽宽改进增强版生成后的解决方案你只需打开来把WinUI或WebUI、JsonWebUI设为启动项即可正常工作,数据库连接语句全生成的(Asa、Pdm生成的要手动改下数据库连接语句) 11、实体类可生成C#2.0、C#3.0以上、MVC、WCF等。 12、业务逻辑层可生成:BLL、BLS(Web Services)等。
- 强大的代码生成功能 自动生成三层架构的代码. 强大的模板代码生成引擎,可根据模板生成各种代码. 支持新建整个项目和批量代码生成功能. 自动生成ASP.NET页面及后台代码. 自动生成增、删、改、查的存储过程和数据记录的SQL脚本. 完全可以自定制的开源代码生成模板组件管理. 多种类型数据库集中管理器 可支持SQL Server、Oracle、MySQL、OleDb、SQLite 等多种类型的数据库同时管理. 实现类似SQLServer2008的查询分析器的功能,方便编写代码时想进行数查询. 数据库表和字段的搜索功能. 版本更新: 1.新版本中增加了强大的模板代码生成功能,可以自己创建和编辑模板动态生成代码。模板教程详见在线帮助。 2.增加了根据模板批量生成代码,可以同时生成多个表的多个模板。 3.增加了存储过程前缀@的自定义配置功能,工具-选项-数据类型映射。 4.增加了针对视图的批量代码生成生成代码时可以选择视图。 5.增加了按"表名"搜索功能,并且选中表名可以打开代码生成器。 6.数据类型映射的配置功能完善。 7.新建项目,选择VS版本的位置调整。 8.修正DAL基于sql的生成方式中,UPdate方法不能更新空值的问题。 9.修正了timestamp时间戳列更新问题,在Update方法中排除更新该列。 10.修正了在没有数据库连接的时候代码生成设置保存报错的问题。 11.修正了模板代码生成缺少表描述信息的问题。 强大便捷的日常开发工具 自动生成数据库结构文档. Web项目发布,方便网站日常的升级和更新. C#ToVB.NET代码转换器.

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧