我读过的man页面,但我不已了解了name和namespace是.
对于版本3和版本5 UUID,必须提供附加命令行参数命名空间和名称.命名空间是字符串表示形式的UUID或内部预定义命名空间UUID的标识符(当前已知为"ns:DNS","ns:URL","ns:OID"和"ns:X500").名称是一个任意长度的字符串.
命名空间:
命名空间是字符串表示形式的UUID或
这是否意味着我需要将它(UUID v4)存储在与生成的UUID v5相关的某个地方?在任何一种情况下,为什么这不是自动完成的?
名称是一个任意长度的字符串.
name完全随机的字符串?它的目的是什么呢?可以从UUID v5解码吗?
我们使用Guid作为主键,默认情况下你知道它是聚类的.
将新行插入表格时,会将其插入表格中的随机页面(因为Guid是随机的).这具有可测量的性能影响,因为DB将始终分割数据页(碎片).但我的主要原因是顺序Guid是什么因为我希望将新行插入表中的最后一行...这将有助于调试.
我可以在CreateDate上创建聚簇索引,但我们的数据库是自动生成的,在开发中,我们需要做一些额外的事情来促进这一点.此外,CreateDate不适合聚簇索引.
在那天我使用了Jimmy Nielsons COMB,但我想知道.NET框架中是否存在某些内容.在SQL 2005中,Microsoft引入了newsequentialid()作为newid()的替代品,所以我希望他们创建一个.NET等价物,因为我们在代码中生成了ID.
PS:请不要开始讨论这是对还是错,因为GUID应该是唯一的等等.
Windows Vista引入了三种伪语言环境的概念:
Pseudo Locale Locale Name LCID
=================== =========== ======
Base qps-ploc 0x0501
Mirrored qps-mirr 0x09ff
East Asian-language qps-asia 0x05fe
Run Code Online (Sandbox Code Playgroud)
启用Base语言环境非常有用,因为您可以检查应用程序是否使用当前语言环境来设置日期,时间,数字,金钱等项目的格式.
例如,当前区域设置设置为Base时,日期将格式化为:
[Шěđлеśđαỳ!!!],8ōf[Μäŕςћ!!]ōf2006

使用这些语言环境的另一个值:它测试您的应用程序不会假设16位PRIMARYLANGID由以下内容组成:
或图形化:
+-----------------------+-------------------------+
| Sublanguage ID | Primary Language ID |
+-----------------------+-------------------------+
15 10 9 0 bit
Run Code Online (Sandbox Code Playgroud)
这三个伪语言环境终于走到了第8位的末尾(微软一直厌倦了打破错误的应用程序).
如何在Windows中启用伪语言环境?
windows localization internationalization windows-7 pseudolocalization
我正在创建asp.net mvc4示例.在此我在datacontext的Sample表中创建了Id列作为GUID.
public class Sample
{
[Required]
public Guid ID { get; set; }
[Required]
public string FirstName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是实体表
CreateTable(
"dbo.Samples",
c => new
{
ID = c.Guid(nullable: false),
FirstName = c.String(nullable: false)
})
.PrimaryKey(t => t.ID);
Run Code Online (Sandbox Code Playgroud)
Id传递00000000-0000-0000-0000-000000000000.
如何设置newid()到GUID哪里我必须设置.
顺序GUID是唯一的,但是是通过订单创建的; 该顺序略有异常,与使用标准.NET Guid比较器时获得的顺序不同.
我正在寻找一个C#Guid比较器,它将根据顺序GUID的规则进行排序.
==更新==
我特别指的是由SQL Server中的NewSequentialId()创建的顺序GUID,虽然我现在意识到标准的Win32 API调用UuidCreateSequential()使用与SQL Server不同的方案(我假设它们在我写这个问题时是相同的) .
==更新2 ==
petelids给出了以下答案,例如List <System.Data.SqlGuid> .Sort()给出以下序列(使用每个4位位置1的GUID的初始列表)...
01000000-0000-0000-0000-000000000000
10000000-0000-0000-0000-000000000000
00010000-0000-0000-0000-000000000000
00100000-0000-0000-0000-000000000000
00000100-0000-0000-0000-000000000000
00001000-0000-0000-0000-000000000000
00000001-0000-0000-0000-000000000000
00000010-0000-0000-0000-000000000000
00000000-0100-0000-0000-000000000000
00000000-1000-0000-0000-000000000000
00000000-0001-0000-0000-000000000000
00000000-0010-0000-0000-000000000000
00000000-0000-0100-0000-000000000000
00000000-0000-1000-0000-000000000000
00000000-0000-0001-0000-000000000000
00000000-0000-0010-0000-000000000000
00000000-0000-0000-0001-000000000000
00000000-0000-0000-0010-000000000000
00000000-0000-0000-0100-000000000000
00000000-0000-0000-1000-000000000000
00000000-0000-0000-0000-000000000001
00000000-0000-0000-0000-000000000010
00000000-0000-0000-0000-000000000100
00000000-0000-0000-0000-000000001000
00000000-0000-0000-0000-000000010000
00000000-0000-0000-0000-000000100000
00000000-0000-0000-0000-000001000000
00000000-0000-0000-0000-000010000000
00000000-0000-0000-0000-000100000000
00000000-0000-0000-0000-001000000000
00000000-0000-0000-0000-010000000000
00000000-0000-0000-0000-100000000000
Run Code Online (Sandbox Code Playgroud)
与List <System.Guid>返回的以下顺序相反..Sort()
00000000-0000-0000-0000-000000000001
00000000-0000-0000-0000-000000000010
00000000-0000-0000-0000-000000000100
00000000-0000-0000-0000-000000001000
00000000-0000-0000-0000-000000010000
00000000-0000-0000-0000-000000100000
00000000-0000-0000-0000-000001000000
00000000-0000-0000-0000-000010000000
00000000-0000-0000-0000-000100000000
00000000-0000-0000-0000-001000000000
00000000-0000-0000-0000-010000000000
00000000-0000-0000-0000-100000000000
00000000-0000-0000-0001-000000000000
00000000-0000-0000-0010-000000000000
00000000-0000-0000-0100-000000000000
00000000-0000-0000-1000-000000000000
00000000-0000-0001-0000-000000000000
00000000-0000-0010-0000-000000000000
00000000-0000-0100-0000-000000000000
00000000-0000-1000-0000-000000000000
00000000-0001-0000-0000-000000000000
00000000-0010-0000-0000-000000000000
00000000-0100-0000-0000-000000000000
00000000-1000-0000-0000-000000000000
00000001-0000-0000-0000-000000000000
00000010-0000-0000-0000-000000000000
00000100-0000-0000-0000-000000000000
00001000-0000-0000-0000-000000000000
00010000-0000-0000-0000-000000000000
00100000-0000-0000-0000-000000000000 …Run Code Online (Sandbox Code Playgroud) 这是我正在查看的表的简化版本:
CREATE TABLE [dbo].[FrustratingTable]
(
[Id] Uniqueidentifier NOT NULL
, [SecondField] [datetime]
, [ThirdField] varchar(128)
)
Run Code Online (Sandbox Code Playgroud)
我想在此表中插入新记录.我尝试了3种方法:
INSERT INTO [dbo].[FrustratingTable] (Id, SecondField, ThirdField)
SELECT newid() as Id,
'6/25/2015' as SecondField, 'Example' as ThirdField
Run Code Online (Sandbox Code Playgroud)
这种方法插入,但结果键不是一个很好的顺序GUID,就像表中的其他键
INSERT INTO [dbo].[FrustratingTable] (Id, SecondField, ThirdField)
SELECT NEWSEQUENTIALID() as Id, '6/25/2015' as SecondField, 'Example' as ThirdField
Run Code Online (Sandbox Code Playgroud)
这失败了,错误
newsequentialid()内置函数只能在CREATE TABLE或ALTER TABLE语句中的"uniqueidentifier"类型的列的DEFAULT表达式中使用.它不能与其他运算符组合以形成复杂的标量表达式.
INSERT INTO [dbo].[FrustratingTable] (SecondField,ThirdField)
SELECT '6/25/2015' as SecondField, 'Example' as ThirdField
Run Code Online (Sandbox Code Playgroud)
这失败了,错误
无法将值NULL插入列'id',表'mydatabase.dbo.frustratingtable'; 列不允许空值.INSERT失败.
是否有可能在不改变表定义的情况下解决这个问题?
我有一个C#应用程序,它为我插入表中的每一行生成一个顺序GUID.我希望插入的GUID是顺序的,但有时它们会破坏序列(以块为单位).
例:
这些GUID按插入顺序显示.
为什么这些"顺序"GUID是在如此大的序列中断的情况下创建的?
用于生成顺序GUID的代码:
class NativeMethods
{
[DllImport("rpcrt4.dll", SetLastError = true)]
public static extern int UuidCreateSequential(out Guid guid);
}
public static Guid CreateSequentialGuid()
{
const int RPC_S_OK = 0;
Guid guid;
int result = NativeMethods.UuidCreateSequential(out guid);
if (result == RPC_S_OK)
return guid;
else
return Guid.NewGuid(); //<--In debugging, this statement never runs.
}
Run Code Online (Sandbox Code Playgroud)
循环中使用的代码,用于将新GUID和信息插入表中:
Guid mySequentialGUID = CreateSequentialGuid();
string[] row = { item1,
item2,
item3,
sourceText,
encoding.ToString(),
mySequentialGUID.ToString()
};
var listViewItem = new ListViewItem(row);
myListView.Items.Add(listViewItem);
Run Code Online (Sandbox Code Playgroud)
编辑:请参阅此问题以了解顺序GUID:
c# ×3
guid ×3
.net ×1
asp.net-mvc ×1
localization ×1
sequential ×1
sql ×1
sql-server ×1
uuid ×1
windows ×1
windows-7 ×1