这个独特的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
继承的,构造函数在(源代码)中定义
public IdentityUser()
{
Id = Guid.NewGuid().ToString();
}
因此GUID是在构造函数中生成的。其他身份表格也是如此。
注意:数据库中的ID字段是varchar(字符串)
。
EF没有生成那个值。那是一个GUID(在T-SQL中为uniqueidentifier)值,当插入新行时,由SQL Server自动生成。
在 EF Core 和 POCO 中:
...
.Property(p => p.Id)
.ValueGeneratedOnAdd()
;
我认为这更多是 SQL-Server 的一个特性,而不是 EF 直接的特性。EF 会创建带有自增长字段的唯一 ID 表。
如果您想手动实现此功能,则需要一个唯一 ID 字段。因此,您的对象应该具有 GUID
属性 Id
,您可以为其分配 Guid.NewGuid()
。
希望能帮到您。