这个问题似乎比通常的映射问题更有趣。
我有一个方法可以用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身上。有什么想法吗?
答案 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;
}
}
}