【发布时间】:2013-03-27 13:03:16
【问题描述】:
我正在创建一个应用程序,我想尝试使用 GUID。我首先使用实体框架代码和 LINQ,所以我认为最简单的方法是使用
string guid = Guid.NewGuid().ToString();
var acc = new v_Account();
acc.v_AcctGuid = guid;
然后将我的 GUID 作为类型字符串存储在我的数据库中。这是一个不好的做法吗? GUID 真的只是一个全局唯一的随机生成的字符串吗?
我很确定它会起作用,但我只是不想面对未来的问题或这样做会造成漏洞。
【问题讨论】:
-
stackoverflow.com/questions/467271/… ...'Guid 有多随机'? ...尽管如此,您为什么不为其 AccountNumber 设置一个递增的整数...为什么它需要是一个 Guid?
-
为什么要将 GUID 值转换为字符串而不是直接使用它们,即将
v_AcctGuid属性定义为Guid类型? -
我建议阅读
GUID也希望你不会将其用作潜在的Primary KeyInteger values are much quicker when Indexing off of than StringsGUIDS 据说是Unique我不认为你甚至有时间测试 GUID 是否会重复自身的准确性...我建议您在投入过多之前进行更多研究Wasted Effort -
GUID 实际上是一个 16 字节的数组。它只是表示为一个十六进制字符串并分成几部分以使其更易于人类使用。但归根结底,它只有 16 个字节,最好将其存储为字节数组而不是字符串,因为字节数组将占用一半的空间。 MS SQL Server 实际上有一个 GUID 列类型,如果你正在使用它的话。
-
您并没有说您将如何处理 GUID,因此我们无法告诉您它是否危险。 GUID 只是一段数据。每个人的猜测是您想将它们用作主键的唯一值;这将是对 GUID 的错误使用。将您的数据库设施用于身份字段。如果您想将它们用于其他用途,请解释一下。
标签: c# linq entity-framework ef-code-first guid