问题
I'm using ASP.Net membership to secure my site and I have a question about how to store extra user information. By googling and reading other questions I think the 3 accepted approaches to storing additional data
- Profile framework - generally regarded as too restricting
- Custom Profile provider - a little bigger than I want to attempt at the moment
- Using another table with user information - the choice I'm following
I've created a new table in addition to the ASP.Net membership tables named User_Information that has a one-to-one foreign key to aspnet_Users. When I create a new table to store information linked to a user (e.g. comments, votes, etc) should I set the foreign key to point to aspnet_User or my User_information table?
thanks
回答1:
It depends on the nature of your queries.
The Membership provider will give you easy access to the user ID column from the aspnet_Users table. It will take an extra query to get the ID from your table.
However, if most of your queries require joining your User_Information table anyway, then it may not really matter.
回答2:
I use the same way as you did. I have a weak-reference without any physical relationship between those two tables. It works perfectly fine for me. To manage dependencies you can wrap the database operations within a transactions for both the tables.
I recommend not to create any foreign key and continue with this design.
回答3:
I pick aspnet_User table. It is, after all, considered to be the "primary" table for user info, no?
来源:https://stackoverflow.com/questions/1938266/when-using-asp-net-membership-plus-an-additional-table-to-store-user-information