0

SQLテーブルに2つの列を作成しました。1つはID列で、もう1つはvarchar列です。値1000からID列を生成する必要があります。以下のコードスニペットを試しましたが、「エントリの更新中にエラーが発生しました。詳細については、内部例外を参照してください。」というエラーが発生しました。

   Place objPlace = new Place();
   objPlace.PNAME = "place 3";
   //objPlace.PID = 1003;   //purposefully commented for auto increment

   objContext.Places.AddObject(objPlace);
   objContext.SaveChanges();

私はEFを初めて使用するので、これは非常に基本的な質問だと思います。それを整理するのを手伝ってください。

4

4 に答える 4

1

構文を学ぶためにEFでこれを実行したいだけですか?私が尋ねる理由は、SSMSの列にシードを設定できるためです(http://msdn.microsoft.com/en-gb/library/aa933196%28v=sql.80%29.aspx

于 2013-03-24T11:08:13.183 に答える
0

Identity列に値を割り当てることはできません。その無意味。

ID列の開始値を変更したい場合は、簡単なスクリプトで変更してみませんか?

context.Database
       .ExecuteSqlCommand("ALTER TABLE Place ALTER COLUMN Id IDENTITY (1000,1)");

これにより、テーブルの最初の行に1000として挿入Place.Idされ、その後の行に1001,1002...というように挿入されます。

于 2013-03-24T10:56:19.990 に答える
0

SQLサーバーにIDを生成させます。IDシードとID増分の値を設定します。

列がIDの場合、エンティティフレームワークからレコードを挿入すると、次のエラーが発生します。 IDENTITY_INSERTがOFFに設定されている場合、テーブル'MY_ENTITY'のID列に明示的な値を挿入できません。 エラーを回避するには、エンティティプロパティStoreGeneratedPattern="Identity"を設定します

  <EntityType Name="MY_ENTITY">
              <Key>
                <PropertyRef Name="UserID" />
              </Key>
              <Property Name="RecordID" Type="int" StoreGeneratedPattern="Identity" Nullable="false" />
于 2013-07-08T08:14:48.563 に答える
0

上記の投稿で言及されているExecuteSqlCommand()コマンドは、リンクで言及されているようには機能しません

別の解決策はここに記載されています

于 2014-10-18T17:28:13.737 に答える