【发布时间】:2017-06-05 14:50:41
【问题描述】:
我在尝试执行我的 ORM 程序时收到此错误消息。
NHibernate.Exceptions.GenericADOException: '无法插入: [NHibernateWinFormsApp.Employee][SQL: INSERT INTO Employee DEFAULT 价值观;选择 SCOPE_IDENTITY()]'
这是我的映射文件编辑
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="NHibernateWinFormsApp"
namespace="NHibernateWinFormsApp">
<class name="Employee">
<id name="EmployeeId" column="EmployeeId">
<column name="EmployeeId" not-null="true" />
<column name="FirstName" />
<column name="LastName" />
<generator class="native"/>
</id>
<bag name="Department" table="EmployeeDepartment" >
<key column="EmployeeId" not-null="true" />
<many-to-many class="Department" column="DepartmentId"/>
</bag>
</class>
<class name="Department">
<id name="DepartmentId">
<column name="DepartmentId" not-null="true" />
<column name="DepartmentName" />
<generator class="native"/>
</id>
<bag name="Employee" table="EmployeeDepartment" inverse="true">
<key column="DepartmentId" not-null="true"/>
<many-to-many class="Employee" column="EmployeeId"/>
</bag>
<property name="DepartmentName" type="string"/>
</class>
</hibernate-mapping>
然后,进入我的会话:
DepartmentRepository departmentRepository = new DepartmentRepository(session);
// get department by id
Department department = departmentRepository.GetById(int.Parse(textDepartment.Text));
employeeData.Department = new List<Department>();
employeeData.Department.Add(department);
department.Employee.Add(employeeData);
有人知道如何解决这个小问题吗?
【问题讨论】:
-
@ahmedabdelqader 我不确定我是否可以同意。请告诉我我是否错了。 :)
-
这是完整的错误信息吗?对我来说,它看起来被截断了。 SQL-Server 应该提供更多信息。检查内部异常,寻找
SqlException并查阅他们的Errors属性。否则捕获失败的插入 SQL 并直接在您的数据库上重放它。 -
@Frédéric
Message=could not insert: [NHibernateWinFormsApp.Employee][SQL: INSERT INTO Employee DEFAULT VALUES; select SCOPE_IDENTITY()] -
@Frédéric
SqlException: Violation of UNIQUE KEY constraint 'Code'. Cannot insert duplicate key in object 'dbo.Employee'. The duplicate key value is (<NULL>, <NULL>).
标签: c# sql-server visual-studio nhibernate orm