2013-09-05 52 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