0

我正在为我的映射使用流利的 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 的员工?

4

1 回答 1

1

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

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

Fluent NHibernate 只是帮助映射实体的工具。 NHibernate是您用来创建、读取、更新和删除数据的工具。在任何情况下:

9.5。删除持久对象

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

来自NHibernate 文档

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

如果您Cascade.SaveUpdate在删除关系一侧的实体时使用多对多,它将删除该实体和任何关系。如果您删除关联(例如,如果您Employee从 a中删除 an Company),则只会删除关系 ( EmployeeToCompany)。这是我通常发现在多对多关系的情况下起作用的方法。

Look at this article for more details on mapping and using a many to many relationship in Fluent NHibernate.

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

于 2012-04-18T12:01:43.990 回答