2012-08-22 24 views
1

的TERMINFO類NHibernate的刪除批次引用

public class TermInfo 
{ 
    public TermInfo() 
    { 
     this.Breviary = string.Empty; 
     this.CreateBy = string.Empty; 
     this.CreateDate = DateTime.Now; 
     this.Group = 0; 
     this.Name = string.Empty; 
    } 

    public override int GetHashCode() 

    public virtual int TermId { get; set; } 

    public virtual string Name { get; set; } 

    public virtual string Breviary { get; set; } 

    public virtual int Group { get; set; } 

    public virtual string CreateBy { get; set; } 

    public virtual DateTime CreateDate { get; set; } 

    public virtual IList<Taxonomy> Taxonomies { get; set; } 
} 

分類學類

public class Taxonomy 
{ 
    public Taxonomy() 
    { 
     this.TermTaxonomy = string.Empty; 
     this.Description = string.Empty; 
     this.ParentId = 0; 
     this.OrderId = 0; 
     this.PostCount = 0; 
    } 

    public virtual int TaxonomyId { get; set; } 

    public virtual string TermTaxonomy { get; set; } 

    public virtual string Description { get; set; } 

    public virtual int ParentId { get; set; } 

    public virtual int OrderId { get; set; } 

    public virtual int PostCount { get; set; } 

    public virtual TermInfo Term { get; set; } 
} 

映射

internal class TaxonomyMap : ClassMap<Taxonomy> 
{ 
    public TaxonomyMap() 
    { 
     Table("Smart_TermTaxonomy"); 
     Id(x=>x.TaxonomyId).GeneratedBy.Identity(); 
     Map(x => x.Description); 
     Map(x => x.OrderId); 
     Map(x => x.ParentId); 
     Map(x => x.PostCount); 
     Map(x => x.TermTaxonomy).Column("Taxonomy"); 


     References(x => x.Term, "TermId"); 

     DynamicUpdate(); 
     DynamicInsert(); 
    } 
} 

internal class TermInfoMap : ClassMap<TermInfo> 
{ 
    public TermInfoMap() 
    { 
     Table("Smart_PostTerms"); 
     Id(x=>x.TermId).GeneratedBy.Identity(); 
     Map(x => x.Breviary); 
     Map(x => x.CreateBy); 
     Map(x => x.CreateDate); 
     Map(x => x.Group).Column("[Group]"); 
     Map(x => x.Name).Column("[Name]"); 

     HasMany<Taxonomy>(x => x.Taxonomies).KeyColumn("TermId"); 
    } 
} 

我的問題是,我怎麼能由term.Name刪除分類 我的預計SQL將是:

'從smart_postTaxonomy刪去termId =(從 smart_PostTerms選擇termId其中[名稱] = @名稱)'

所以,我應該寫爲HQL查詢字符串?

回答

4

您是否嘗試過在HQL中做類似的事情?

session.CreateQuery(
    "delete from Taxonomy t where t.Term.id = " + 
    " (select ti.id from TermInfo ti where ti.Name = :name)") 
    .SetParameter("name", termName) 
    .ExecuteUpdate();