0

Пожалуйста, помогите! Я не могу удалить объекты и зависимость в таблице Oid и CertRequest.Удалить на многих для многих отношений с использованием свободного Нибернатева

У меня есть наблюдение:

Oid

общественный класс Oid { публичных виртуальный ИНТ Id {получить; защищенный набор; }
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

Я извиняюсь, я не сказал, что я использую Sharp-архитектуры, а также атрибут транзакции по методу.

+0

Помогите сделать все операции в одной транзакции! Благодаря! – Artemoniks

ответ

0

Является _certRequestRepository объектом типа ISession?

Если это так, вам необходимо позвонить _certRequestRepository.Flush(), чтобы зафиксировать удаление в базе данных.

Еще ни о чем не просматривайте, используйте транзакции.

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

Прошу прощения, я не сказал, что использую метод Sharp-Architecture и Transaction по методу. – Artemoniks

Смежные вопросы