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