我正在尝试使用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();
}
}
答案 0 :(得分:1)
看起来Styles
属性的映射不正确。你使用正确的表名吗?从例外情况来看,似乎没有这样的表Styles
。