LINQ to SQL. Изменение имени таблицы во время выполнения
У меня есть 6 таблиц с одинаковой структурой, но с разными данными. В каждой таблице хранится более или менее миллиона записей.
В целях производительности я ставлю только один год в каждой таблице. У меня есть такие таблицы, как Document_2005, Document_2006, ecc... Я только что выполнил процедуру импорта нового года, и все работает нормально, но aspxGridView (DevExpress) работает очень медленно.
Поэтому мне пришлось включить ServerMode, и теперь эффективность намного выше, но я больше не могу использовать SQL для доступа к нужной таблице. String.Format("Document_{0}",year);
потому что ServerMode нужен LINQ TO SQL Class.
теперь я помещаю все свои классы в файл dbml, и все работает отлично, но как я могу отобразить новые таблицы (с той же структурой) в следующие ближайшие годы, которые мне придется добавлять вручную и перестраивать каждый год? Я попытался изменить имя исходной таблицы в автоматически сгенерированном классе, и если я изменил TableAttribute на другое имя таблицы и перестроить все работает нормально.
Как я могу достичь того же результата, не перестраивая проект каждый раз?
Я пытаюсь использовать TypeDescriptor.AddAttributes, чтобы изменить TableAttribute сгенерированного класса, но он не работает. Я думаю об отражении, но кажется, что отражение ничего не может сделать в этом случае...
1 ответ
Да, Linq-2-sql основан на коде, поэтому вам нужно будет добавить их вручную и повторно развернуть. Я думаю, что это будет иметь место для большинства фреймворков ORM.
Конечно, вы можете добавить их все в течение следующих 10 лет и покончить с этим.
Если вы действительно не перейдете к разделению и т. Д., Это будет лучшим подходом. Не так много проблем, я думаю.