2016年9月30日金曜日

SQL Serverで自動採番の主キーを手動設定に変更したけど・・・

Entity Frameworkを使用しています。
こういうクラスを作っていました。
public class User
{
    [Key]
    public int Id { getset; }
 
    public string Name { getset; }
}
マイグレーションを追加すると、このようなコードが出力されます。
identityがtrueなのでデータを追加すると、Idは自動採番されるわけです。
CreateTable(
    "dbo.User",
    c => new
        {
            Id = c.Int(nullable: false, identity: true),
            Name = c.String(),
        })
    .PrimaryKey(t => t.Id);

で、わけあって、開発途中でこの主キーを自動採番せず、自分で設定して登録することになりました。
MSDNによると、属性を指定すればOK!ということなので、DatabaseGenerated属性にDatabaseGeneratedOption.Noneを指定しました。
public class User
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int Id { getset; }
 
    public string Name { getset; }
}
マイグレーションを追加すると、このようにidentityの指定がなくなりました。
DropPrimaryKey("dbo.User");
AlterColumn("dbo.User""Id", c => c.Int(nullable: false));
AddPrimaryKey("dbo.User""Id");
これでUpdate-Databaseを実行したのですが、どうにもこうにもテーブルに反映されませんね。
仕方がないので、Management Studio上で「IDENTITYの指定」を「False」に変更しました。

またいつか、どこかで。

0 件のコメント:

コメントを投稿