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.