2013-09-05 11 views
0

제발, 도와주세요! Oid 및 CertRequest 테이블에서 개체 및 종속성을 삭제할 수 없습니다.Fluent Nhibernatev를 사용하여 많은 관계에서 삭제

내가 가진 후속 :

의 Oid

공용 클래스의 Oid { public 가상 INT 이드가 {얻을; 보호 된 집합; }
공용 가상 int RowVersion {get; 세트; }
public virtual string Code {get; 세트; } public virtual string Name {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