EF中的可选DatabaseGenerated属性

时间:2017-09-06 15:21:03

标签: c# sql entity-framework

我有这段代码并且工作正常,当我创建一个新对象时,数据库生成新ID

   [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public override Guid Id
    {
        get => base.Id;
        set => base.Id = value;
    }

我的问题是:我有一个场景,然后我需要使用我使用此Id的模型创建一个新的寄存器并且Id是固定的,我不能使用生成的。 有任何可选参数可以覆盖这一代吗?

我尝试指定Id属性,但EF忽略并生成一个新属性。

1 个答案:

答案 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);