C#书写规范(2)

(网上整理,感谢原作者)

三、数据库设计规范

(一)表格分类与命名


1.数据表的分类


系统表    支撑业务模型的数据表,如流程模型、系统管理相关表。


业务表    产品提供的针对业务的通用功能模块相关表,如通用业务查询等。


用户表    用户二次开发使用的与具体业务相关的数据表。


2.数据表的命名


所有表格命名一律以字母“T”开头(Table),并且用实义单词以下划线“_”间隔。


系统表    系统表前缀为:TSYS_


业务表前缀为:TBIZ_


用户表由用户自行定义,但是建议不要与系统表和业务表的命名规则重复。


字段的命名


字段的命名规则参照代码标识符的命名规则,但是注意避开数据库的保留字。比如不要采用这样的字段名:index,field,password,id,Oracle,SQL等等。


对于涉及到技术核心的系统表,为了防止剖析,建议采用类似“F1,F2,F3……Fn”的方式命名。但是不要采用“F0”,因为这个名称在某些数据库中不被允许,比如Interbase。

3.索引的建立


索引是一把双刃剑,索引将提高查询的效率,但是却降低了insert/delete/update 的效率。


通常情况下,对数据的编辑频度和时限要求远远低于对数据库的查询要求,因此对于记录很多且频繁查询的数据表,必须建立索引。


大多数数据库为主键字段自动创建索引,注意为外键创建索引。


不要索引大字段,这样作会让索引占用太多的存储空间。


尽量不要索引频繁编辑的小型表。


identify字段不要作为表的主键与其它表关联,这将会影响到该表的数据迁移。如果考虑支持多数据库,建议主键采用程序生成的唯一值。


如果一个大型表需要频繁的做insert/delete/update操作,同时也需要做高并发量的查询,那么建议根据数据的访问频度对表作拆分,而后建立索引。

4.过程与函数


数据库厂商为了凸现自身的优势,都提供了丰富且个性化的过程与函数。


为了提升产品的伸缩性和数据无关性,请不要使用与特定数据库相关的过程与函数,也不推荐采用Store Procedure,建议使用应用服务器的中间层业务对象。

字段/域的定义


尽量避免使用Blob,如果一定要用,请不要索引blob,并且不要定义多个blob。


不要使用日期字段,改用字符串char(19)替代,如:2008-12-09 12:22:08。


对于确定长度的串,请固定字段类型的长度,如char(80),不要采用varchar。


对于值类型字段,请使用对应的数据库值类型,而不要用字符串。

四、Com和.Net互操作规范


.NET 技术已经成为微软平台的主流,但是在Win32时代开发了很多COM、DCOM组件,由于在开发COM组件时投入了大量的人力、财力,如何在.NET环境下重用这些COM组件就显得更有意义。


.NET支持运行时通过COM、COM+、本地WinAPI调用与未托管代码的双向互操作性,要实现互操作性,必须首先引入.NET Framework的 System.Runtime.InteropServices命名空间。


C#的语法为:


using System.Runtime.InteropServices;


(1).NET访问API


.NET允许C#访问未托管的DLL的函数。如要调用Windows User32.dll的MessageBox函数:


int MessageBox(HWND hwnd,LPCTSTR lpText, LPCTSTR lpCaption,UINT uType)


可以声明一个具有DLLImport属性的static extern方法:


using System.Runtime.InteropServices;


[DllImport(“user32.dll”)]


static ertern int MessageBox(int hwnd,string text,string caption,int type);


然后在代码里面直接调用就可以了。这里要注意在调用返回字符串的API中使用StringBuilder对象。


(2).NET访问COM组件


从.NET调用COM组件比较容易,只要使用tlbimp.exe产生COM的装配形式的WarpClass,然后在.NET项目中调用即可。


注意COM的类型信息通过Type Library文件描述,.NET装配件是自描述的。Tlbimp的作用是从COM组件及其类型信息中产生自描述的装配件。


1.编写Com组件


编译生成一个ComAccount.dll。


2. 产生.NET可访问的包装类(assembly),使用TlbImp.exe产生.NET装配件。


TlbImp /out:NetAccount.dll ComAccount.dll


3.在.NET代码中访问


.NET代码只需引用NetAccount.dll,就可以像访问.NET的装配件一样访问COM组件

posted @   Kai.Ma  阅读(267)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示