2017-11-06 19 views
0

オフに設定されてCATEGORYクラスがエラーソリューションは、私が最初にEFコードを使用してい

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public DbSet<DomesticTask> DomesticTasks { get; set; } 
    public DbSet<Category> Categories { get; set; } 
に従っている

{ 
    public int Id { get; set; } 

    [Required] 
    [StringLength(255)] 
    public string Name { get; set; } 
} 

DBのコンテキストに従っている

public class DomesticTask 
    { 
     public int Id { get; set; } 

     [Required] 
     public ApplicationUser DomesticClient { get; set; } 
     public DateTime DateTime { get; set; } 

     [Required] 
     [StringLength(500)] 
     public string Description { get; set; } 

     [Required] 
     public Category Category { get; set; } 
    } 

よう DomesticTaskクラスが見えます

と私の移行クラスは次のようになります

public partial class PopulateCategoriesTable : DbMigration 
{ 
    public override void Up() 
    { 
     Sql("INSERT INTO Categories (Id, Name) VALUES (1, 'Plumber')"); 
     Sql("INSERT INTO Categories (Id, Name) VALUES (2, 'Mason')"); 
     Sql("INSERT INTO Categories (Id, Name) VALUES (3, 'Labour')"); 
     Sql("INSERT INTO Categories (Id, Name) VALUES (4, 'Milk-man')"); 
     Sql("INSERT INTO Categories (Id, Name) VALUES (5, 'Electrician')"); 
    } 

    public override void Down() 
    { 
     Sql("DELETE FROM Categories WHERE Id IN (1, 2, 3, 4, 5)"); 
    } 
} 

私はupdate-databaseを実行すると、次のエラーが表示されます。

エラー番号:544、状態:1、クラス:16は表に ID列に明示的な値を挿入することはできませんIDENTITY_INSERTが OFFに設定されている「カテゴリー」。

エラーを解決するにはどうすればよいですか?

+1

可能な複製(https://stackoverflow.com/questions/1334012/cannot-insert-explicit- table-table-identity-if-identity-column) – Igor

+0

エラーメッセージを/ googleで検索すると、多くの回答リンクが見つかります。 – Igor

答えて

0

SQL Serverによって挿入されるはずのID列であるカテゴリのIDの値を挿入しています。

0

挿入中にidentity列の値を設定できるように、移行スクリプトを更新する必要があります。もちろん、ANSI-92 SQL以外のT-SQLを使用しているので、データストアとしてSQL Serverを使用していることを前提としています。

public partial class Seed_Categories : Migration 
{ 
    protected override void Up(MigrationBuilder migrationBuilder) 
    { 
     migrationBuilder.Sql(@" 
      SET IDENTITY_INSERT [dbo].[Categories] ON; 

      INSERT INTO [dbo].[Categories] ([ID], [NAME], [CODE]) 
       VALUES 
        (1, 'Science Fiction',  'SCIFI'), 
        (2, 'Historical Fiction', 'HISFI'), 
        (3, 'Historical',   'HISTO'), 
        (4, 'English Literature', 'ENGLT'), 
        (5, 'Spanish Literature', 'SPALT'); 

      SET IDENTITY_INSERT [dbo].[Categories] OFF; 
      "); 
    } 

    protected override void Down(MigrationBuilder migrationBuilder) 
    { 

    } 
} 
[IDENTITY \ _insertがOFFに設定されている場合は、テーブル「テーブル」内のID列に明示的な値を挿入することはできません]の
関連する問題