Изменение схемы всегда является проблемой. Хотя я не являюсь большим сторонником хранения XML в базе данных, похоже, ваша проблема может использовать этот подход.
Это решение требует, чтобы вы сделали одно (и только одно изменение схемы). Это может / не может быть осуществимо в вашем приложении.
В вашей таблице у вас, вероятно, будет столбец для уникального идентификатора и столбец для xml (SQL Server 2005/2008, естественно, поддерживает его). Вы можете сериализовать его как XML (вы, вероятно, в конечном итоге будете использовать универсальный XML Serializer- Serializer<T>
, тип которого вы бы вывели во время выполнения, используя отражение). Десериализовать его, и вы можете получить свой объект. Вы можете прочитать больше об этом здесь .
Таким образом, ваш запрос будет выглядеть как
var myXML = from c in ObjectContext.Table
where c.FolderName == "Test" select MyXmlColumn;
var myType = InferTypeFromConfig();
var serializer = new XmlSerializer<myType>();
var object = (myType )serializer.Deserialize(TheXMLStreamCreatedFrom(myXml));
мои $ 0,02