C# – How to setup a property from 1 linq2sql obj that is populated by a relationship to another obj

clinq-to-sqlorm

I'm using Linq2SQL and I'm pretty new to it.

I've got a User table and a UserData table, the idea being that properties for the User object can be added / removed by adding or removing rows in the UserData table. I did not come up with this particular design but I am more or less stuck with it (as long as I can come up with a solution)

alt text http://www.86th.org/linq2sqlproblem.jpg

I'd like to populate/bind "FirstName" on the User object by something along the lines of setting the value to:


UserData.Value WHERE UserData.ItemID == User.UserID AND KeyName = 'FirstName'

Similarly, LastName would be:


UserData.Value WHERE UserData.ItemID == User.UserID AND KeyName = 'LastName'

Description of the UserData Table:

  • UserData.ItemID is the FK (User.UserID)
  • UserData.KeyName is specifying the name of the property
  • UserData.Value is the actual value.

How would I setup my User object to handle this so I could do the normal CRUD functionality on this object and have the changes carry through to both tables?

Is this even possible?

Is this bad form?

Best Answer

Personally I feel its bad form but I suppose everyone has there way of doing things. Why can't you assign userdata in the users table? I think I might not be understanding the design idea here.