Gur*_*yan 1 c# entity-framework-core asp.net-core
在mssql数据库中,我有一个名为AutoIncrementNumber的自动递增列 ,使用此配置
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<User>(entity =>
{
entity.Property(e =>e.AutoIncrementNumber).ValueGeneratedOnAdd();
}
}
Run Code Online (Sandbox Code Playgroud)
我添加了一个新用户并想要更新此用户
var user = new User { UserName = "SomeUserName", Code=0};
var result = await _userManager.CreateAsync(user, "SomePassword");
//after CreateAsync user.AutoIncrementNumber == 1
if (result.Succeeded)
{
user.Code = 1;
userManager.UpdateAsync(user);
}
Run Code Online (Sandbox Code Playgroud)
但是在UpdateAsync期间遇到了一个错误
DbUpdateException:更新条目时发生错误。有关详细信息,请参见内部异常。SqlException:无法更新标识列“ AutoIncrementNumber”
项目在.net core 1.1下运行
SQL模式
CREATE TABLE [dbo].[AspNetUsers](
[Id] [nvarchar](450) NOT NULL,
[UserName] [nvarchar](256) NULL,
[AutoIncrementNumber] [int] IDENTITY(1,1) NOT NULL,
[ReferralCode] [nvarchar](50) NULL,
CONSTRAINT [PK_AspNetUsers] PRIMARY KEY CLUSTERED (
[Id] ASC )WITH (
PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON
) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
ValueGeneratedOnAdd表示该值是由数据库在插入对象时生成的,插入时应忽略该属性。
您应该使用ValueGeneratedOnAddOrUpdate来指定该值也应从UPDATE中排除。
随着数据注释,相当于ValueGeneratedOnAddOrUpdate是[DatabaseGenerated(DatabaseGeneratedOption.Computed)]。相当于ValueGeneratedOnAddIS[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
检查Microsoft文档中的“ 生成的值”部分。
| 归档时间: |
|
| 查看次数: |
1844 次 |
| 最近记录: |