我有这段代码并且工作正常,当我创建一个新对象时,数据库生成新ID
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public override Guid Id
{
get => base.Id;
set => base.Id = value;
}
我的问题是:我有一个场景,然后我需要使用我使用此Id的模型创建一个新的寄存器并且Id是固定的,我不能使用生成的。 有任何可选参数可以覆盖这一代吗?
我尝试指定Id属性,但EF忽略并生成一个新属性。
答案 0 :(得分:0)
好吧,我设法直接使用SqlCommand修复,因为它只是在数据库Seed中需要调用它来插入特定用户。
Guid userid = user.Id;
string email = user.Email;
string username = user.UserName;
string avatarurl = user.Details.AvatarUrl;
string firstname = user.Details.FirstName;
var sql = @"INSERT INTO
[Users]
([Id], [Email], [UserName], [EmailConfirmed], [PhoneNumberConfirmed], [AccessFailedCount], [TwoFactorEnabled], [LockoutEnabled])
VALUES
(@Id, @Email, @Username, 'false', 'false', 0, 'false', 'false')";
SqlParameter[] groupIdParam =
{
new SqlParameter("@Id", SqlDbType.UniqueIdentifier)
{
Value = userid
},
new SqlParameter("@Email", SqlDbType.NVarChar)
{
Value = email
},
new SqlParameter("@Username", SqlDbType.NVarChar)
{
Value = username
}
};
_context.Database.ExecuteSqlCommand(sql, groupIdParam);