Thank you very much Roger,
I was looking for something like that but I couldn't find it.

I have implemented what the link says, but is not working properly, in some
cases doesn't delete at all and in others it just keeps deleting item by
item.

I am using Fluent Nhibernate for mapping, but here is the mapping that it is
producing for the class Query:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
default-access="property" auto-import="true" default-cascade="none"
default-lazy="true">
  <class xmlns="urn:nhibernate-mapping-2.2" mutable="true" name="Query,
Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
table="`Query`">
    <id name="Id" type="System.Int32, mscorlib, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <column name="Id" />
      <generator class="identity" />
    </id>
    <bag cascade="all-delete-orphan" inverse="true" name="NasLocations"
mutable="true">
      <key>
        <column name="Query_id" />
      </key>
      <one-to-many class="NASLocation, Domain, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null" />
    </bag>
    <bag cascade="all-delete-orphan" inverse="true" name="MetadataItems"
mutable="true">
      <key>
        <column name="Query_id" />
      </key>
      <one-to-many class="MetadataItem, Domain, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null" />
    </bag>

Mapping for QueryMetadataItem and NasLocations relation with Query:

<many-to-one class="Query,Domain, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null" foreign-key="Query_id" name="Query">
      <column name="Query_id" />
    </many-to-one>

I am deleting the items as follows:
query.NasLocations.Clear();
query.MetadataItems.Clear();

And then removing the Query itself.
The NasLocations items do not get deleted at all, and the MetadataItems get
delete one by one.

Any ideas?

Dzy.-

PS: On the mappings I deleted most of the namespaces text, to make the
mapping smaller.

On Fri, Apr 1, 2011 at 6:42 PM, Roger Kratz <[email protected]>wrote:

>
> http://www.nhforge.org/doc/nh/en/index.html#performance-collections-oneshotdelete
>
>
> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On Behalf
> Of Dzyann
> Sent: den 1 april 2011 23:23
> To: nhusers
> Subject: [nhusers] Delete Cascade taking a long time
>
> Hi,
>
> I have a an entity Query that has a lot of items Metadata in a relation
> "one-to-many".
> When I delete the Query, I want all its childs to be delete too, so I set
> cascade to all-delete-orphan.
>
> The items get deleted, but it takes a lot of time. The query can have many
> items, lets say 95k items.
> I checked out with the SQL Profiler to see what was going on, and I saw
> that each Metadata Item is getting deleted one by one like:
>
> exec sp_executesql N'DELETE FROM MyDatabase.dbo.[QueryMetadata] WHERE Id =
> @p0',N'@p0 int',@p0=302401
>
> This takes time, and produces a bad user experience. I would like to hear
> out any recommendations.
> Maybe is better if I delete the items with a sql sentence?
>
> Thanks in advance for your help!
>
> Dzy.-
>
> --
> You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to