IDENTITY_INSERTがOFFに設定されている場合、テーブルのID列に明示的な値を挿入することはできません

序文:

今日のコンピューター室の再建中に、オペレーターがカードを顧客に返却したときにエラーが発生し、データをチェックアウトテーブルに挿入できませんでした。

IDENTITY_INSERTがOFFに設定されている場合、テーブル「CheckOut」のID列に明示的な値を挿入することはできません。

理由:

1.Insertステートメントが実行されると表示されます

2.いつでも、セッション内の1つのテーブルのみのIDENTITY_INSERTプロパティをONに設定できます。テーブルでこのプロパティがONに設定されていて、別のテーブルに対してSET IDENTITY_INSERT ONステートメントが発行された場合、Microsoft®SQLServer™はSET IDENTITY_INSERTがONに設定されたことを示すエラーメッセージを返し、このプロパティがONテーブルに設定されたことを報告します。 。

解決:

参照ブログ:https //www.cnblogs.com/wzzyuxi/p/11174958.html

1.最初の方法を使用します:明示的な値をテーブルのID列に挿入できるようにします

元のデータベース操作ステートメントの前に文を追加します。

set identity_insert CheckOut(表名) ON

成功する

string sql = "set identity_insert CheckOut ON Insert into CheckOut Date=values @date";

この文の意味:テーブルのIDENTITY_INSERTプロパティをONに設定できます

オフ(OFF)にする必要がある場合、コードは次のとおりです。

set identity_insert OrderList OFF +  插入语句
ON:允许插入显式值插入 标识列
OFF:不允许

2.方法2:

構成ファイルを変更する

エラーが発生したときのファイル構成:

--hibernate持久化类配置 注意id中Generator子节点设置Class属性为:assigned自动增长
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
    <class name="TestHibernateExpre.Entities.OrderListModel,TestHibernateExpre" table="OrderList">
        <id name="Orderid" column="id" type="int">
            <!--id中参数的设置问:native/assigned/foreign/increment-->
            <generator class="assigned"></generator>
        </id>
    </class>

 変更された構成ファイル

--Hibernate中关于持久化类的配置  注意id下Generator子节点 class属性配置为native
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
    <class name="TestHibernateExpre.Entities.OrderListModel,TestHibernateExpre" table="OrderList">
        <id name="Orderid" column="id" type="int">
            <!--id中参数的设置问:native/assigned/foreign/increment-->
            <generator class="native"></generator>
        </id>
      </class>

 

おすすめ

転載: blog.csdn.net/weixin_44690047/article/details/112380578