C# 使用Fluent Nhibernatev删除多对多关系

C# 使用Fluent Nhibernatev删除多对多关系,c#,nhibernate,fluent-nhibernate,fluent,sharp-architecture,C#,Nhibernate,Fluent Nhibernate,Fluent,Sharp Architecture,请帮帮我!我无法删除Oid和CertRequest表中的对象和依赖项 我有以下几点: 老年人 公共类Oid { 公共虚拟整数Id{get;protected set;} 公共虚拟整数行版本{get;set;} 公共虚拟字符串代码{get;set;} 公共虚拟字符串名称{get;set;} } 什么也不做 任何提示 更新 对不起,我没有说我在方法上使用了Sharp架构和事务属性。是\u certRequestRepository类型为ISession的对象吗 如果是这样,您必须调用\u certR

请帮帮我!我无法删除Oid和CertRequest表中的对象和依赖项

我有以下几点:

老年人

公共类Oid { 公共虚拟整数Id{get;protected set;}
公共虚拟整数行版本{get;set;}
公共虚拟字符串代码{get;set;} 公共虚拟字符串名称{get;set;} }

什么也不做

任何提示

更新


对不起,我没有说我在方法上使用了Sharp架构和事务属性。

\u certRequestRepository
类型为
ISession
的对象吗

如果是这样,您必须调用
\u certRequestRepository.Flush()
将删除提交到数据库

更好的方法是使用事务

using(var transaction = _certRequestRepository.BeginTransaction())
{
    certRequest.Oids.Clear();
    certRequestRepository.Delete(certRequest);
    transaction.Commit();
}

很抱歉,我没有说我使用Sharp架构和方法上的事务属性。我可以在一个事务中帮助完成所有操作!谢谢
public class CertRequest
{
    public virtual int Id { get; protected set; }  
    public virtual int RowVersion { get; set; }      
    public virtual string LastName { get; set; }
    public virtual string FirstName { get; set; }
    public virtual string MiddleName { get; set; }
    public virtual ICollection<Oid> Oids { get; set; }
}

public class CertRequestMap : IAutoMappingOverride<CertRequest>
{
    public void Override(AutoMapping<CertRequest> mapping)
    {
        mapping.Map(c => c.LastName).Nullable().Length2000();
        mapping.Map(c => c.FirstName).Nullable().Length2000();
        mapping.Map(c => c.MiddleName).Nullable().Length2000();
        mapping.HasManyToMany(c => c.Oids)
            .Table("CertRequestToOid")
            .ParentKeyColumn("CertRequestId")
            .ChildKeyColumn("OidId");
    }
}
certRequest.Oids.Clear();

_certRequestRepository.SaveOrUpdate(certRequest);

_certRequestRepository.Delete(certRequest);
using(var transaction = _certRequestRepository.BeginTransaction())
{
    certRequest.Oids.Clear();
    certRequestRepository.Delete(certRequest);
    transaction.Commit();
}