Entity Frameworkを使用します。私はDBのテーブルに問題があります。Entity Frameworkは、プライマリキーではない列に対して自動インクリメントと開始値を設定します。
IDはGUID
で、新しいGUID
を手動で作成します。移行を追加するとき、私はこれを取得
Company {
private Guid id = Guid.NewGuid();
[Required, Range(10000000, 999999999)]
[Index(IsUnique = true)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public virtual long StakeholderNumber
{
get;
set;
}
}
(と思う) は、今私は自動インクリメントに新しい列を実装したいと私は大丈夫働いている列の自動インクリメントを作るために、これは100000000 で起動したいですマイグレーションファイル。
public override void Up()
{
AlterColumn("dbo.Companies", "StakeholderNumber", c => c.Long(nullable: false, identity: true));
CreateIndex("dbo.Companies", "StakeholderNumber", unique: true);
}
public override void Down()
{
DropIndex("dbo.Companies", new[] { "StakeholderNumber" });
AlterColumn("dbo.Companies", "StakeholderNumber", c => c.Long(nullable: false));
}
これは動作するように見えます。 しかし、私はstakeholderNumberが、他の例から100000000の代わりに、1 で開始したい、これはprimary
にstakeholdernumberを設定することで、作業して、行を追加することができます。
Sql("DBCC CHECKIDENT ('dbo.Companies', RESEED, 100000000);");
しかし、私はstakeholdernumberはprimary
になりたくありません!
私はupdadte-データベースでこれを実行すると、私はこのエラーを取得する:
Companies' does not contain an identity column
SO列primary
をせずに10000000にStakeholdernumberの自動インクリメントを設定する方法はありますか?
元のエンティティモデル/構成と変更されたエンティティ/構成の完全な例を表示できますか。 –
実際問題は、移行が既存の列を「IDENTITY」に変更しない**ことです。 [Entity-Frameworkの更新されたDatabaseGeneratedOptionを持つエンティティの移行](http://stackoverflow.com/questions/30462749/migrate-entity-with-updated-databasegeneratedoption-inentity-framework)を参照して、いくつかのアイデアを得るそれを解決する。 –
エンティティフレームワークを使用しようとするのではなく、SQLのデフォルト値をMAX + 1に設定するだけです。 –