Я пытаюсь удалить запись базы данных, используя ASP.NET MVC, Fluent и NHibernate. См. приведенный ниже код для примеров того, как я пытаюсь это сделать. Я могу получать, обновлять и вставлять записи, но удаление не работает. Когда метод Delete() вызывается в контроллере (верхний), он генерирует исключение (System.Data.SqlClient.SqlException: Invalid object name 'Styles'.
).
Я хотел бы избежать любого мета-SQL-запроса, потому что я не хочу жестко кодировать имя таблицы в контроллере, если мне это не нужно.
Фрагмент контроллера:
// POST: /Brand/Delete/5
// Here is the handler in the controller
[HttpPost]
public ActionResult Delete(int id, FormCollection collection)
{
try
{
IRepository<Brand> repo = new BrandRepository();
repo.Delete(id);
return RedirectToAction("Index");
}
catch
{
throw;
}
}
Фрагмент репозитория:
//Here is the repository
//The insert/update/get/etc all work fine
void IRepository<Brand>.Delete(int id)
{
using (ISession session = NHibernateHelper.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
IRepository<Brand> repo = new BrandRepository();
session.Delete(repo.GetById(id));
transaction.Commit();
}
}
}
Фрагмент сопоставления:
//And here is the mapping for a Brand
public class BrandMap : ClassMap<Brand>
{
public BrandMap()
{
Table("Brands");
Id(x => x.Id).GeneratedBy.Identity();
Map(x => x.Name);
HasMany(x => x.Styles)
.Inverse()
.Cascade.All();
}
}
BrandRepository
внутри методаDelete
, который, как кажется, уже является частью этого класса? - person Darin Dimitrov   schedule 06.09.2010catch (Exception ex)
и отладьте значениеex
, или, что еще лучше, удалите блокtry/catch
и оставьте исключение распространяться. - person Darin Dimitrov   schedule 06.09.2010Shoes
, и я думал, что изменил ее наStyles
, но, видимо, это не так. - person Joe Phillips   schedule 06.09.2010