2013-09-05 31 views
0

请帮帮我!我无法删除Oid和CertRequest表中的对象和依赖关系。使用流利Nhibernatev删除多对多关系

我有如下:

的Oid

公共类的Oid { 公共虚拟INT标识{获得;保护组; }
public virtual int RowVersion {get;组; }
公共虚拟字符串代码{get;组; } 公共虚拟字符串名称{get;组; }}

public class OidMap : IAutoMappingOverride<Oid> 
{ 
    public void Override(AutoMapping<Oid> mapping) 
    { 
     mapping.Map(c => c.Code).Not.Nullable().Unique(); 
     mapping.Map(c => c.Name).Not.Nullable().Length2000(); 
    } 
} 

CertRequest

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); 

什么也不做。

任何提示...

UPDATE

我很抱歉,我不能说,我使用夏普的架构和交易属性的方法。

+0

我帮忙做一笔交易中的所有操作!谢谢! – Artemoniks

回答

0

_certRequestRepositoryISession类型的对象?

如果是这样,您将不得不致电_certRequestRepository.Flush()将删除提交到数据库。

更好的是,使用交易。

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

我很抱歉,我没有说我使用Sharp-Architecture和Transaction属性的方法。 – Artemoniks