相关疑难解决方法(0)

如何在实体框架中为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万
查看次数

在Serverside实体框架5上生成Guid?

我来自一个nhibernate背景,我想知道如何在serer端自动生成Guid而不是在数据库端进行往返?

在流利的nhibernate中它很简单

   Id(x => x.Id).GeneratedBy.GuidComb();
Run Code Online (Sandbox Code Playgroud)

entity-framework guid

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

如何在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
查看次数

自动生成ID GUID数据类型实体框架

我看过这篇文章并尝试这样做

自动生成主键(Guid)实体框架CTP5

 [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
 public Guid CompanyID { set; get; }
Run Code Online (Sandbox Code Playgroud)

但是我仍然得到错误

Identity column 'CompanyID' must be of data type int, bigint, smallint, tinyint, or decimal or numeric with a scale of 0, and constrained to be nonnullable.
Run Code Online (Sandbox Code Playgroud)

这是我在包管理器控制台上运行Update-Database命令的时候.

c# sql-server entity-framework asp.net-mvc-5

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

DatabaseGenerate(DatabaseGenerateOption.Identity) 与 Key

首先查看代码,我看到一些用于[DatabaseGenerated(DatabaseGeneratedOption.Identity)]表示主键的示例,以及其他使用[Key].

我无法找到两者如何比较的描述。

有人可以告诉我何时/是否想使用其中一种而不是另一种吗?

c# entity-framework ef-code-first .net-core razor-pages

4
推荐指数
1
解决办法
2万
查看次数

在实体优先迁移中为新 Guid 列添加默认值

我正在为我的项目使用实体代码首次迁移。我已经启动并运行了系统。但是,我需要添加一个新的 Guid 列,它是一个外键。在尝试更新数据库时,我收到以下错误:

ALTER TABLE 语句与 FOREIGN KEY 约束“FK_dbo.Categories_dbo.aspnet_Roles_RoleId”冲突。冲突发生在数据库“HelpDesk”、表“dbo.aspnet_Roles”、“RoleId”列中。

所以我做了一些研究,发现Entity Framework 6 Code first Default value。但是,我无法弄清楚如何让它为 Guid 设置默认值。这是我试过的代码:

这是迁移:

public override void Up()
{

     AddColumn("dbo.Categories", "RoleId", c => c.Guid(nullable: false, defaultValue: "4468ACB7-AD6F-471E-95CF-615115EA3A76"));
     CreateIndex("dbo.Categories", "RoleId");
     AddForeignKey("dbo.Categories", "RoleId", "dbo.aspnet_Roles", "RoleId");
}

public override void Down()
{
     DropForeignKey("dbo.Categories", "RoleId", "dbo.aspnet_Roles");
     DropIndex("dbo.Categories", new[] { "RoleId" });
     DropColumn("dbo.Categories", "RoleId");
}
Run Code Online (Sandbox Code Playgroud)

如果我切换到此代码,我能够摆脱所有构建错误(但如果我运行 Update-database,仍然会出现 Alter Table 错误:

AddColumn("dbo.Categories", "RoleId", c => c.Guid(nullable: false, identity: false, defaultValue: null));
Run Code Online (Sandbox Code Playgroud)

如何将其转换为添加特定 Guid 作为默认值?

migration asp.net-mvc ef-code-first

1
推荐指数
2
解决办法
3517
查看次数