千家信息网

用数据库生成的ID会生成什么问题

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要讲解了"用数据库生成的ID会生成什么问题",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"用数据库生成的ID会生成什么问题"吧!用数据库生成应
千家信息网最后更新 2025年11月07日用数据库生成的ID会生成什么问题

这篇文章主要讲解了"用数据库生成的ID会生成什么问题",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"用数据库生成的ID会生成什么问题"吧!

用数据库生成应用ID会造成什么问题?

首先,最大的问题是你把应用程序中一个极其重要的部分授权给第三方软件,在授权第三方责任时,你已经失去了对这个应用程序的掌控权。

其次,在设计实体类时,你可能会使用不恰当的方法,因为你想让它与一个永久框架更兼容,比如说C# .NET中的实体框架。初级程序员犯的最严重的一个错误就是使用public Id setter方法来设置ID。

第三,你突然要依靠第三方来给实体提供ID,这会把原本不复杂的单元测试变得复杂。假设你已经发现使用public ID setter本质上是一个严重的错误,而你又不想通过调用代码来设置ID。创建的类看起来会如下所示:

你选择的ORM仍然可以通过反射来设置id字段。要知道,有反射存在就没有什么是真正安全的。

但该如何对此进行单元测试?实例化时将id字段设置为0。实例化多个TerribleBook会出现身份冲突情况,因为现在不止一个TerribleBook具有相同的ID,即便他们代表两个不同的实体。

如何生成更合适的ID并追回授权?

方法其实非常简单,看下面的代码:

不是人人都能注意到TerribleBook到FixedBook之间的转变,所以请认真阅读这段代码。

首先,ID由整数变成字符串,这样可以更好地实现伸缩性,但一定要限制数据库中字段的长度。永远不要对已知长度的字段使用 VARCHAR(MAX)——它会占用内存。

然后将构造函数设为私有,并使用静态工厂方法实例化新对象。这样可以从调用者中抽象出实例化逻辑,甚至为我们提供了使用多态的机会——我们可能想返回某个Null对象而不是抛出。

注意,虽仍然把id当作构造函数参数,但是ID的生成和提供是由我们来决定的(在第18行),而不是数据库。

Guid.NewGuid()。ToString("D")只能确保获得连字符格式的GUID。笔者喜欢用GUID,但是你可以自由构建自己的ID,无论哪种ID都可以满足你的业务和应用程序需求。

感谢各位的阅读,以上就是"用数据库生成的ID会生成什么问题"的内容了,经过本文的学习后,相信大家对用数据库生成的ID会生成什么问题这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

生成 数据 数据库 问题 字段 实体 实例 方法 程序 应用 代码 应用程序 第三方 学习 复杂 内容 函数 单元 对象 就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 高新区中高端服务器应用范围 网络安全密码学研究 软件开发费用清单模板下载 浙江深圳网络安全培训实战教学 飞车手游怎么分享服务器 当代网络安全问题 朔州握吨网络技术有限公司 带网络安全模式能远程吗 网络安全意识心得体会小学生 软件开发部门的看法 工业网络技术学是大数据类吗 浅析计算机网络安全及防范技术 门头沟区网络软件开发服务保障 非公安信息网络安全监察 网络技术有哪些网站 我的世界服务器小游戏城市英雄 网易服务器是什么样子的 网络安全峰会期间 高中网络技术程序设计 数据库临时表和正式表 网络安全不好找工作是真的吗 手机游戏服务器地址查找 名爵6互联网黑科技 富国科技互联网基金净值 方舟生存进化服务器怎么保存不了 市政府网络安全管理会议 网络技术是人工智能吗 地方数据库行业政策 4060数据库错误是什么意思 上海彦骏互联网科技有限公司
0