엔티티 프레임 워크 코어 및 mysql 데이터베이스를 사용합니다.
내 모델은 다음과 같습니다.
public class User
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
}
사용자를 추가하려고하면 Field 'Id' doesn't have a default value
var user = new User {
Name = "Whatever"
};
_dbContext.Users.Add(user);
_dbContext.SaveChanges(); // Throws exception
그리고 그것을 디버깅 할 때 내 사용자의 id 값이 -2147482647
InnerException {MySql.Data.MySqlClient.MySqlException: Field 'Id' doesn't have a default value
at MySql.Data.MySqlClient.MySqlDataReader.ActivateResultSet(ResultSet resultSet)
at MySql.Data.MySqlClient.MySqlDataReader.<ReadFirstResultSetAsync>d__62.MoveNext()
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
및 [Key]
사용하여 시도했지만 아무 것도하지 않았습니다. 생성 된 마이그레이션은 다음과 같습니다.
[DbContext(typeof(TetrominoContext))]
[Migration("20170625090637_SixthMigration")]
partial class SixthMigration
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
modelBuilder
.HasAnnotation("ProductVersion", "1.1.2");
modelBuilder.Entity("Tetromino.Models.User", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd();
b.Property<string>("Name")
.IsRequired();
b.HasKey("Id");
b.ToTable("Users");
});
}
}
내 패키지 :
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.3" />
<PackageReference Include="Microsoft.AspNetCore.NodeServices" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.2" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="1.1.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.2" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="1.1.2" />
</ItemGroup>
엔티티 프레임 워크가 필드 Id
를 자동 증분으로 설정하지 않은 것처럼 내 데이터베이스를 살펴본 후 강제로 찾을 수는 없습니다.
도움이 될지 확인하기 위해 데이터베이스를 다시 만들었지 만 오류가 여전히 발생하므로 마이그레이션을 어떻게 든 수정해야한다고 생각합니다.
pomelo의 github에있는 사람들 덕분에 문제를 해결할 수있었습니다. 이전의 모든 마이그레이션을 제거해야한다는 것이 밝혀졌습니다. 같은 문제가있는 사람들에게.
Update-Database 0
(이전 Update-Database 0
를 제거하려면 먼저 마이그레이션으로 돌아 가야합니다) Remove-Migration
: Remove-Migration
Add-Migration migrationName
Update-Database
: Update-Database
또한 [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
또는 [Key]
가 필요하지 않습니다.