Я новичок в NHibernate, поэтому я не совсем уверен, что я делаю неправильно. Я в настоящее время получаю это сообщение:Ошибка вставки Nhibernate (GenericADOException)
не мог вставить: [NhibernateTest.Domain.Order # 5ed0d146-644b-44ff-A080-f8cf3048158e] [SQL: INSERT INTO Order (OrderName, ShippingAddress, ShippingDate, OrderID) VALUES (?,?,?,?)]
Я пытаюсь сделать основной вставки в моей базе данных, которая имеет только одну таблицу.
Мой домен-класс:
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;
}
}
И мое отображение:
<?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>
Мой 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();
}
}
}
и вот мой 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);
}
Я знаю, что объект Order имеет информацию, когда он передается в .Add-функцию. Значит, я полагаю, что это должно быть связано с моим картографированием?
Благодаря
Где ваша сессия/сделка объявлена? Где вы это совершаете? – Artless
Я только что добавил, что часть кода – Alexander
NHibernate обрабатывает ошибки очень хорошо. Вы можете проверить внутреннее большинство «InnerException» и опубликовать его здесь? – Artless