NHibernate - 没有持久性:System.Guid

时间:2014-09-16 16:08:59

标签: c# .net nhibernate orm mapping

这个问题似乎比通常的映射问题更有趣。

我有一个方法可以用NHibernate执行删除但是我挂在一些显然很简单的问题上。我已经查看了可能与此相关的各种其他类似问题,但几个小时后我就挂断了它。

我有这个方法:

    public void DeleteOrganization(Guid actorId)
    {
        using (var session = _nhibernate.OpenSession())
        {
            ITransaction transaction = session.BeginTransaction();
            try
            {
                session.Delete(actorId);
                transaction.Commit();
            }
            catch (Exception)
            {
                transaction.Rollback();
                throw;
            }
        }
    }

这个HBM地图:

    <class name="Actor, Domain.Entities" table="Actor" lazy="false">
    <id name="ActorId" column="ActorId" type="Guid" unsaved-value="00000000-0000-0000-0000-000000000000">
        <generator class="guid" />
    </id>

我似乎仍然被困在这里。踢球者是它挂在Guid身上。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这里遇到的麻烦是我正在映射一个Organization对象并尝试删除id(而不是记录本身)。在我之前的代码中,我应该尝试删除Organization对象。正确的代码如下:

public void DeleteOrganization(Guid actorId)
{
    using (var session = _nhibernate.OpenSession())
    {
        ITransaction transaction = session.BeginTransaction();
        try
        {
            var Organization = (from p in session.Query<Organization>()
                                       where p.ActorId == actorId
                                       orderby p
                                       select p).First();

            session.Delete(Organization);
            transaction.Commit();
        }
        catch (Exception)
        {
            transaction.Rollback();
            throw;
        }
    }
}
相关问题