Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fluent nhibernate 流畅的多对多关系问题_Fluent Nhibernate - Fatal编程技术网

Fluent nhibernate 流畅的多对多关系问题

Fluent nhibernate 流畅的多对多关系问题,fluent-nhibernate,Fluent Nhibernate,我在尝试使用Fluent Nhibernate删除多对多关系时遇到了一个问题。我有以下域类: public class Organisation { public virtual int Id {get; set;} private IList<OrganisationRelationshiop> relatedOrganisations; public virtual IList<OrganisationRelationship> Related

我在尝试使用Fluent Nhibernate删除多对多关系时遇到了一个问题。我有以下域类:

public class Organisation
{
   public virtual int Id {get; set;}

   private IList<OrganisationRelationshiop> relatedOrganisations; 

   public virtual IList<OrganisationRelationship> RelatedOrganisation
   {
       get
       {
           return this.relatedOrganisations;
       }

      protected set
      {
           this.relatedOrganisations = value;
      }
    }


    public virtual void RemoveRelatedOrganisation(OrganisationRelationship organisationRelationship)
    {
        this.relatedOrganisations.Remove(organisationRelationship);
    }

}
Her是表的脚本:

组织机构表: 组织关系工作表: 组织关系类型表: 一切正常,但当我尝试删除关系时,fluent Nhibernate会尝试将该特定记录的CompanyId设置为null,而不是从CompanyRelationship表中删除该记录。以下是我在NHProf中看到的问题:

UPDATE CompanyRelationship
SET    CompanyId = null
WHERE  CompanyId = 3893 /* @p0 */
AND Id = 487 /* @p1 */
要删除记录,我调用RemoveRelatedCompany函数,该函数从RelatedCompanys列表中删除特定的CompanyRelationship,然后调用Session.Save()和Session.Flush()保存公司实体


关于我在这里做错了什么,你有什么想法吗

可能必须设置.Cascade.AllDeleteOrphan();(cascade=“all delete orphan”)在您的映射上


此外,如果您发布映射,将更容易回答您的问题

,因为我使用自动映射,我必须覆盖组织的映射,如下所示以解决问题:


mapping.HasMany(c=>c.relatedOrganizations).Inverse().ForeignKeyCascadeOnDelete().Table(“OrganizationRelationship”)

您还可以发布映射类吗?
CREATE TABLE [dbo].[Organisation](
[Id] [int] IDENTITY(1,1) NOT NULL,
[OrganisationName] [nvarchar](200) NOT NULL,
CONSTRAINT [PK_Organisation] PRIMARY KEY CLUSTERED 
(
[Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,    ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[OrganisationRelationship](
[Id] [int] IDENTITY(1,1) NOT NULL,
[OrganisationId] [int] NOT NULL,
[RelatedOrganisationId] [int] NOT NULL,
[OrganisationRelationshipTypeId] [int] NOT NULL,
CONSTRAINT [PK_OrganisationRelationship] PRIMARY KEY CLUSTERED 
(
[Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,        ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[OrganisationRelationshipType](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_OrganisationRelationshipType] PRIMARY KEY CLUSTERED 
(
[Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,    ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
UPDATE CompanyRelationship
SET    CompanyId = null
WHERE  CompanyId = 3893 /* @p0 */
AND Id = 487 /* @p1 */