NHibernate-没有的持久化器:System.Guid

本文关键字:System Guid 持久化 NHibernate- | 更新日期: 2023-09-27 18:22:01

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

我有一个方法可以用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上。有什么想法吗?

NHibernate-没有的持久化器:System.Guid

这里的问题是我映射了一个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;
        }
    }
}