自動增量不適用於模型

c# entity-framework-core mysql

我使用實體框架核心和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上的人們,我能夠解決問題。事實證明,我必須刪除以前的所有遷移。對於那些有同樣問題的人。

  1. 在vs的包管理器中執行: Update-Database 0 (你必須回到第一次遷移才能刪除前一個)
  2. 刪除所有遷移: Remove-Migration
  3. 創建新遷移: Add-Migration migrationName
  4. 更新db: Update-Database

您也不需要[DatabaseGenerated(DatabaseGeneratedOption.Identity)][Key]



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow