C# 使用Fluent Nhibernatev删除多对多关系
请帮帮我!我无法删除Oid和CertRequest表中的对象和依赖项 我有以下几点: 老年人 公共类Oid { 公共虚拟整数Id{get;protected set;}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
公共虚拟整数行版本{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();
}