![](/img/trans.png)
[英]Autogenerate GUID column that is not a primary key in Entity Framework
[英]How does Entity Framework generate a GUID for a primary key value?
此唯一 ID 由 SQL Server 在插入时创建。
如果要让 SQL Server 在插入时生成值,则必须在模型中使用以下属性:
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public Guid Id { get; set; }
或者,如果您想自己管理 Id,只需生成它:
var id = Guid.NewGuid();
GUID 不是由Entity Framework
生成的,也不是由SQL
生成的。 它由Identity 框架处理。 只需导航到IdentityModels.cs
public class ApplicationUser : IdentityUser
{
// ...
}
此类继承自Microsoft.AspNet.Identity.EntityFramework.IdentityUser
并且此类的构造函数定义为 ( Source )
public IdentityUser()
{
Id = Guid.NewGuid().ToString();
}
所以GUID是在构造函数中生成的。 这对于其他身份表也是一样的。
注意:Id 字段是数据库中的varchar (string)
。
EF 没有产生那个价值。 这是一个 GUID(T-SQL 中的uniqueidentifier
)值,它是在插入新行时由 SQL Server 自动生成的。
在 EF 核心和 poco 中:
...
.Property(p => p.Id)
.ValueGeneratedOnAdd()
;
我认为这更像是 SQL-Server 的一个特性,而不是 EF 的直接特性。 EF 创建具有唯一 ID 字段且标识打开的表。 如果你想自己做,你需要一个 unique-id 字段。 然后您的对象应该有一个GUID
属性Id
,例如您分配Guid.NewGuid()
。
希望有帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.