[英]Nhibernate insert error (GenericADOException)
I'm new to NHibernate, so I'm not really sure what I'm doing wrong. 我是NHibernate的新手,所以我不确定自己做错了什么。 I currently receive this message:
我目前收到此消息:
could not insert: [NhibernateTest.Domain.Order#5ed0d146-644b-44ff-a080-f8cf3048158e][SQL: INSERT INTO Order (OrderName, ShippingAddress, ShippingDate, OrderID) VALUES (?, ?, ?, ?)]
无法插入:[NhibernateTest.Domain.Order#5ed0d146-644b-44ff-a080-f8cf3048158e] [SQL:插入订单(订单名称,发货地址,发货日期,订单ID)值(?,?,?,?)
I'm trying to do a basic insert to my database, which only has one table. 我正在尝试对只有一个表的数据库进行基本插入。
My domain-class: 我的域类:
public class Order
{
public virtual Guid OrderID { get; set; }
public virtual string Name { get; set; }
public virtual string ShipAddress { get; set; }
public virtual string ShipDate { get; set; }
public Order()
{
}
public Order(string name, string shipAddress, string shipDate)
{
Name = name;
ShipAddress = shipAddress;
ShipDate = shipDate;
}
}
And my mapping: 和我的映射:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NhibernateTest" namespace="NhibernateTest.Domain">
<class name="Order" table="Order" lazy="true">
<id name="OrderID" column="OrderID">
<generator class="guid" />
</id>
<property name="Name" column="OrderName" type="string" />
<property name="ShipAddress" column="ShippingAddress" type="string" />
<property name="ShipDate" column="ShippingDate" type="string" />
</class>
</hibernate-mapping>
My OrderRepository: 我的订单库:
public void Add(Order order)
{
/* Open up a session to the database. */
using (ISession session = NHibernateHelper.OpenSession())
{
/* Open up a transaction to the database since an order object will be added. */
using (ITransaction transaction = session.BeginTransaction())
{
session.Save(order);
transaction.Commit();
}
}
}
and here's my AddMethod as well as my loadCfg-function: 这是我的AddMethod以及我的loadCfg函数:
[HttpPost]
public ActionResult AddOrder(FormCollection form)
{
LoadNHibernateCfg();
OrderRepository repo = new OrderRepository();
var order = new Order { Name = form[0], ShipAddress = form[1], ShipDate = form[2] };
//order.Name = form[0];
//order.ShipAddress = form[1];
//order.ShipDate = form[2];
repo.Add(order);
return Index();
}
public static void LoadNHibernateCfg()
{
var cfg = new Configuration();
cfg.Configure();
cfg.AddAssembly(typeof (Order).Assembly);
new SchemaExport(cfg).Execute(true, false, true);
}
I know that the Order-object has the information when it's passed to the .Add-function. 我知道Order对象在传递给.Add函数时具有信息。 So I figure it must have something to do with my mapping?
因此,我认为它一定与我的映射有关吗?
Thanks 谢谢
Order
is a reserved keyword. Order
是保留关键字。 For example, when querying for stuff you use Order by
. 例如,查询内容时,可以使用
Order by
。 Here is a list of all reserved words: http://msdn.microsoft.com/en-us/library/aa238507%28v=sql.80%29.aspx 这是所有保留字的列表: http : //msdn.microsoft.com/zh-cn/library/aa238507%28v=sql.80%29.aspx
You can fix this simply by changing your table name and mapping. 您只需更改表名和映射即可解决此问题。 For example, you could name your table
Orders
: 例如,您可以将表命名为
Orders
:
<class name="Order" table="Orders" lazy="true">
I got error like: could not insert: [RegEmails.Model.RegInfo][SQL: INSERT INTO reg_info (MESSAGE_HASH, IS_INTERNAL, PRODUCT, SERVER, VERSION, MODULE, BRIDGE_LICENCE, BRIDGE_LICENCE_EXPIRY, BACK_OFFICE_LICENCE, BACK_OFFICE_LICENCE_EXPIRY, COMMENT, CREATE_DATE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)] 我收到类似错误的错误消息:无法插入:[RegEmails.Model.RegInfo] [SQL:插入reg_info(MESSAGE_HASH,IS_INTERNAL,PRODUCT,SERVER,VERSION,MODULE,BRIDGE_LICENCE,BRIDGE_LICENCE_EXPIRY,BACK_OFFICE_LICENCE,BACK_OFFICE_LICENCED_ATE,CATE_VALUES,CATE_REITATE,CATE_REQUEST,REATE_VALUEICE_REQUEST,REATE_OFFICE_LICENCED [= ,?,?,?,?,?,?,?,?,?,?,?)]
I had something like 我有类似的东西
<id name="info_id" column="INFO_ID">
<generator class="identity" />
</id>
<property name="MessageHash" column="MESSAGE_HASH" length="512" />
<property name="IsInternal" column="IS_INTERNAL" />
<property name="Product" column="PRODUCT" />
<property name="Server" column="SERVER" />
<property name="Version" column="VERSION" />
<property name="Module" column="MODULE" />
<property name="BridgeLicence" column="BRIDGE_LICENCE" />
<property name="BridgeLicenceExpiry" column="BRIDGE_LICENCE_EXPIRY" />
<property name="BackofficeLicence" column="BACK_OFFICE_LICENCE" />
<property name="BackofficeLicenceExpiry" column="BACK_OFFICE_LICENCE_EXPIRY" />
<property name="Comment" column="COMMENT" />
<property name="CreateDate" column="CREATE_DATE" />
InnerException: Unknown column 'MESSAGE_HASH' in 'field list' InnerException:“字段列表”中的未知列“ MESSAGE_HASH”
I solved by removing 我通过删除解决了
<id name="info_id" column="INFO_ID">
<generator class="identity" />
</id>
<property name="MessageHash" length="512" />
<property name="IsInternal" />
<property name="Product" />
<property name="Server" />
<property name="Version" />
<property name="Module" />
<property name="BridgeLicence" />
<property name="BridgeLicenceExpiry" />
<property name="BackofficeLicence" />
<property name="BackofficeLicenceExpiry" />
<property name="Comment" />
<property name="CreateDate" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.