0

私はEFコードファーストを使用してASP.NET MVC4アプリを開発し、移行機能も使用しています。特定のエンティティがあり、何らかの理由で明示的な ID 値を設定したい。これどうやってするの?次のような属性でidプロパティをマークしようとしました:

public class NewsSource
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int Id { get; set; }

    public string Title { get; set; }

    public string WebSiteUrl { get; set; }
}

次に、対応する移行を追加し、データベースを削除して、次のように Seed() メソッドを使用してデータベースを更新しようとします。

context.NewsSources.AddOrUpdate(x => x.Title,
            new NewsSource {Id = 654, Title = "ABC", WebSiteUrl = @"http://www.abc.com/"},
            new NewsSource {Id = 22, Title = "XYZ", WebSiteUrl = @"http://XYZ.ru/"});

そして、次のエラーが発生しました:「IDENTITY_INSERT が OFF に設定されている場合、テーブル 'NewsSources' の ID 列に明示的な値を挿入できません」。EF と移行を使用して identity_insert を ON に設定するにはどうすればよいですか。多くのトピックから理解したように、それは不可能であり、直接 SQL コマンドを使用する必要があります。私が間違っている?

4

2 に答える 2

1

元は ID フィールドではない列を IDENTITY フィールドに変更しようとしたときに問題が発生しました。この質問この質問を参照してください。IDENTITYを削除するには、列を削除して再作成する必要があるため、外部キーなどを修正することは、移行で Entity Framework が行うにはおそらくやり過ぎです。Up() および Down() メソッドを自分で変更する必要があります。そうしないと、データベースでそれを行うことを回避できます。

于 2013-08-23T09:21:45.843 に答える