如何删除记录?

时间:2010-09-05 21:50:34

标签: nhibernate asp.net-mvc-2 fluent-nhibernate

我正在尝试使用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();
    }
}

1 个答案:

答案 0 :(得分:1)

看起来Styles属性的映射不正确。你使用正确的表名吗?从例外情况来看,似乎没有这样的表Styles