相关疑难解决方法(0)

生成v5 UUID.什么是名称和名称空间?

我读过的man页面,但我不已了解了namenamespace是.

对于版本3和版本5 UUID,必须提供附加命令行参数命名空间和名称.命名空间是字符串表示形式的UUID或内部预定义命名空间UUID的标识符(当前已知为"ns:DNS","ns:URL","ns:OID"和"ns:X500").名称是一个任意长度的字符串.

命名空间:

命名空间是字符串表示形式的UUID或

这是否意味着我需要将它(UUID v4)存储在与生成的UUID v5相关的某个地方?在任何一种情况下,为什么这不是自动完成的?

名称是一个任意长度的字符串.

name完全随机的字符串?它的目的是什么呢?可以从UUID v5解码吗?

uuid

101
推荐指数
3
解决办法
6万
查看次数

是否有与SQL Server相同的.NET newsequentialid()

我们使用Guid作为主键,默认情况下你知道它是聚类的.

将新行插入表格时,会将其插入表格中的随机页面(因为Guid是随机的).这具有可测量的性能影响,因为DB将始终分割数据页(碎片).但我的主要原因是顺序Guid是什么因为我希望将新行插入表中的最后一行...这将有助于调试.

我可以在CreateDate上创建聚簇索引,但我们的数据库是自动生成的,在开发中,我们需要做一些额外的事情来促进这一点.此外,CreateDate不适合聚簇索引.

在那天我使用了Jimmy Nielsons COMB,但我想知道.NET框架中是否存在某些内容.在SQL 2005中,Microsoft引入了newsequentialid()作为newid()的替代品,所以我希望他们创建一个.NET等价物,因为我们在代码中生成了ID.

PS:请不要开始讨论这是对还是错,因为GUID应该是唯一的等等.

.net c# sql-server

31
推荐指数
5
解决办法
1万
查看次数

如何在Windows中使用enable pseudo-locale进行测试?

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

Windows的构建实际上是用伪完成的,然后本地化为英文:

在此输入图像描述

使用这些语言环境的另一个值:它测试您的应用程序不会假设16位PRIMARYLANGID由以下内容组成:

  • 8位主要语言ID
  • 8位子语言id

在现实中PRIMARYLANGID是:

  • 一个10位的主要语言ID
  • 一个6位的子语言id

或图形化:

+-----------------------+-------------------------+
|     Sublanguage ID    |   Primary Language ID   |
+-----------------------+-------------------------+
 15                   10 9                       0   bit
Run Code Online (Sandbox Code Playgroud)

这三个伪语言环境终于走到了第8位的末尾(微软一直厌倦了打破错误的应用程序).

如何在Windows中启用伪语言环境?

也可以看看

windows localization internationalization windows-7 pseudolocalization

19
推荐指数
2
解决办法
5659
查看次数

如何在实体框架中为GUID设置NewId()

我正在创建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哪里我必须设置.

asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 entity-framework-5

12
推荐指数
4
解决办法
3万
查看次数

如何在C#中对顺序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)

c# guid newsequentialid

6
推荐指数
2
解决办法
3671
查看次数

如何插入使用顺序GUID作为主键的表?

这是我正在查看的表的简化版本:

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失败.

是否有可能在不改变表定义的情况下解决这个问题?

sql guid sql-server-2012

6
推荐指数
1
解决办法
8969
查看次数

生成的顺序GUID有时不是顺序的

我有一个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# guid newsequentialid sequential

3
推荐指数
1
解决办法
1155
查看次数