Products

Solutions

Resources

Partners

Community

Blog

About

QA

Ideas Test

New Community Website

Ordinarily, you'd be at the right spot, but we've recently launched a brand new community website... For the community, by the community.

Yay... Take Me to the Community!

Welcome to the DNN Community Forums, your preferred source of online community support for all things related to DNN.
In order to participate you must be a registered DNNizen

HomeHomeOur CommunityOur CommunityGeneral Discuss...General Discuss...DotNetNuke 5.1 User Accounts Not Actually Deleted?DotNetNuke 5.1 User Accounts Not Actually Deleted?
Previous
 
Next
New Post
8/4/2009 10:07 PM
 

Michael Washington wrote
 

If module developers are allowed to place Foreign keys on Core tables how can the core tables ever be modified?

If the Core wants to copy a table to a temp table and drop that table and then recreate it and copy the data back, how can they do that if an unknown number of 3rd party modules have placed Foreign key relation ships on them?

 

Michael

What do you suggest?  What other options are there?  The only other possible solution I see is for every third party module to include a scheduler job that runs periodically to delete related third party data whenever a user record is deleted...  That is not scalable.   I have several very large installtions that need real time updates on user data.  So, unless the sceduler job is running constantly, it won't provide real-time updates.   And if it was running constantly ... well thats just a silly amount of overhead and waste of resources to handle referential integrity that should be handled at the DB level.

If there is another viable option, I am all ears.

At the end of the day, DNN is a framework that is meant to be extended.  In order to that, there must be SOME things in the framework that are stable enough to build upon.   I don't think it is too much to say the Users table will always have UserID as a primary key, which can be referenced by third party modules.  Especially when the framework provides  no mechanism to tie into a delete event for a core object.

 
New Post
8/4/2009 10:15 PM
 

Sebastian Leupold wrote
 

Jay, Mike,

though I see your point of view and understand your use cases, there are some additional needs, we have to take into account:

  • MS Membership provider had been chosen to provide best interop options with other .Net applications. unfortunately there are some constraints in the original provider interface, limiting extensibility of membership now
  • "Authorized" has a different meaning depending on registration mode. When using "verified", it states a valid email address. I agree, it would be preferable to have different flags instead, but atm we have to accept it.
  • Soft delete is a new feature, which has room for improvements, as currently logged enhancement requests indicate.I am sure, this will be handled appropriately to available resources and priority.

Seconding Michael, 3rd party modules should NOT rely on core data structure, but on supported API only - though I admit, there is room for improvement in this area - for both, providing appropriate subscribable events as providing in depth documentation. 

Sebastian

I am not against the soft delete concept.   What I am very against is rolling it out with incomplete functionality.  Soft delete without the ability to restore or flush is practically worthless.   Until the full feature set is ready to go, this behavior should be reverted back to hard delete.

Also, when this makes it in, please also include some ability to set a flag (in portal settings preferably) to make soft delete optional.

 
New Post
8/5/2009 12:00 AM
 

Jay Mathis wrote
 

The only other possible solution I see is for every third party module to include a scheduler job that runs periodically to delete related third party data whenever a user record is deleted...  That is not scalable.  I have several very large installtions that need real time updates on user data.  So, unless the sceduler job is running constantly, it won't provide real-time updates.   And if it was running constantly ... well thats just a silly amount of overhead and waste of resources to handle referential integrity that should be handled at the DB level.

You can make your own module to allow administrators to add and delete users. Then you can perform any other "cleanup" you need :)

 

 



Michael Washington
http://ADefWebserver.com
www.ADefHelpDesk.com
A Free Open Source DotNetNuke Help Desk Module
 
New Post
8/5/2009 3:55 AM
 

Michael Washington wrote
 

 Jay Mathis wrote
 

 

The only other possible solution I see is for every third party module to include a scheduler job that runs periodically to delete related third party data whenever a user record is deleted...  That is not scalable.  I have several very large installtions that need real time updates on user data.  So, unless the sceduler job is running constantly, it won't provide real-time updates.   And if it was running constantly ... well thats just a silly amount of overhead and waste of resources to handle referential integrity that should be handled at the DB level.

You can make your own module to allow administrators to add and delete users. Then you can perform any other "cleanup" you need :)

that would create utter chaos if multiple module vendors start down that path...


Erik van Ballegoij, Former DNN Corp. Employee and DNN Expert

DNN Blog | Twitter: @erikvb | LinkedIn: Erik van Ballegoij on LinkedIn

 
New Post
8/5/2009 4:00 AM
 

Michael Washington wrote
 

If module developers are allowed to place Foreign keys on Core tables how can the core tables ever be modified?

If the Core wants to copy a table to a temp table and drop that table and then recreate it and copy the data back, how can they do that if an unknown number of 3rd party modules have placed Foreign key relation ships on them?

IMHO data integrity can only be guaranteed if you force it at the database level. Foreign keys in combination with cascade delete are one the best ways to do that. AFAIK almost all modules have a foreign key between the module data and the modules table (based on moduleid).

deleteing tables and recreating them is something that should not happen anyway :)

Handling foreign keys at core tables properly is more work, but not impossible. If a table change is done that needs a FK dropped temporarily and recreated after the change, that can be done... have a look at RedGate sql comparer.. they do it all the time


Erik van Ballegoij, Former DNN Corp. Employee and DNN Expert

DNN Blog | Twitter: @erikvb | LinkedIn: Erik van Ballegoij on LinkedIn

 
Previous
 
Next
HomeHomeOur CommunityOur CommunityGeneral Discuss...General Discuss...DotNetNuke 5.1 User Accounts Not Actually Deleted?DotNetNuke 5.1 User Accounts Not Actually Deleted?


These Forums are dedicated to discussion of DNN Platform and Evoq Solutions.

For the benefit of the community and to protect the integrity of the ecosystem, please observe the following posting guidelines:

  1. No Advertising. This includes promotion of commercial and non-commercial products or services which are not directly related to DNN.
  2. No vendor trolling / poaching. If someone posts about a vendor issue, allow the vendor or other customers to respond. Any post that looks like trolling / poaching will be removed.
  3. Discussion or promotion of DNN Platform product releases under a different brand name are strictly prohibited.
  4. No Flaming or Trolling.
  5. No Profanity, Racism, or Prejudice.
  6. Site Moderators have the final word on approving / removing a thread or post or comment.
  7. English language posting only, please.
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out