Let's say i have a common base class/interface

```
  interface ICommand
  {
    void Execute();
  }

```

Then there are a few commands inheriting from this interface.

```
  class CommandA : ICommand
  {
    int x;
    int y;
    public CommandA(int x, int y)
    {  ...  }
    public void Execute () { ... }
  }
  class CommandB : ICommand
  {
    string name;
    public CommandB(string name)
    {  ...  }
    public void Execute () { ... }
  }

```

Now i want to store these commands in a database, with a common method, and then later load all of them from the DB into a `List<ICommand>` and execute the Execute-method of them.

Right now I just have one table in the DB called commands and here i store a string serialization of the object. Basically the columns in the table are: `id|commandType|commaSeparatedListOfParameters`. While this is very easy and works good for *loading all* commands, I can't *query* the commands easily without using substring and other obscure methods. I would like to have an easy way of `SELECT id,x,y FROM commandA_commands WHERE x=...` and at the same time have a generic way of loading all commands from the commands-table (i guess this would be some kind of UNION/JOIN of commandA\_commands, commandB\_commands, etc). 

It is important that not much manual fiddling in the DB, or manual creation of serialize/parse-methods, is required to add a new command. I have tons of them and new ones are added and removed all the time. I don't mind creating a command+table+query generation tool though if this would be required for the best solution.

The best i can think of myself is a common table like `id|commandType|param1|param2|param3|etc..` which isn't much better (actually worse?) than my current solution as many commands are going to need null parameters and the datatype will vary so i have to resort to common string conversion again and size each field big enough for the largest command.

The database is SQL Server 2008

**Edit:** Found similar question here [Designing SQL database to represent OO class hierarchy](https://stackoverflow.com/questions/3413459/designing-sql-database-to-represent-oo-class-hierarchy)