I dislike Microsoft in general, but I believe you can accomplish this with SQL server easier than other SQL databases. SQL CLR and your own defined types. Maybe you could even go as far as using some dynamic types with ExpandoObject to have fully dynamic lamda expressions on the columns, however I dont know how well this would perform.