如何使用fluentnhibernate删除表的内容?

时间:2012-04-18 10:32:12

标签: nhibernate fluent-nhibernate fluent-nhibernate-mapping

我使用流畅的nHibernate作为我的映射,如下所示:

public class ContentTagMap: ClassMap<Employee>
{
    public EmployeeMap()
    {
        Id(t => t.Id);
        Map(t => t.Name);
        HasManyToMany(t => t.Company);
    }
}

public class CompanyMap: ClassMap<Company>
{
    public HelpMap()
    {
        Id(h => h.Id);
        Map(h => h.CompanyName).Length(6000);
        Map(h => h.address).Length(6000);
        HasManyToMany(h => h.Employee);
    }
}

这些映射产生Employee Table,Company Table和EmployeeToCompany Table

员工表

Id    Name
1     John
2     MAX

公司表

Id    CompanyName   address
1      HTC           ABC
2      HTC2          India

EmployeeToCompany表

Employee_Id     Company_Id
1               1
2               1

如何删除ID为1的员工?

1 个答案:

答案 0 :(得分:1)

除非我误解你的问题,否则你应该问:

如何使用NHibernate删除表的内容?

Fluent NHibernate只是一个帮助实体映射的工具。 NHibernate 是您用来创建,读取,更新和删除数据的方法。无论如何:

  

9.5。删除持久对象

     

ISession.Delete()将从数据库中删除对象的状态。的   当然,您的应用程序可能仍然会引用它。所以这是   最好将Delete()视为使持久化实例成为瞬态。

来自NHibernate Documentation

您可能还希望在映射中的多对多关系(HasManyToMany)上定义级联样式。

如果您在关系的一侧删除实体时多次使用Cascade.SaveUpdate,则会删除该实体和任何关系。如果您删除了关联(例如,如果您从Employee删除Company),则只会删除关系(EmployeeToCompany)。这是我通常发现在多对多关系中工作的东西。

请阅读本文,了解有关映射和在Fluent NHibernate中使用多对多关系的更多详细信息。

how to keep many to many relationships in sync with nhibernate?