2011-01-11 2 views
2

Позволяет ли LINQ to SQL разрешить изменение таблиц аналогично тому, как таблицы могут быть созданы DataContext.CreateDatabase()?LINQ to SQL: изменить таблицу или добавить новую таблицу в существующую базу данных

Я знаю его плохую практику изменения базы данных, однако в нашу структуру данных может потребоваться добавить новую информацию. Я задавался вопросом, разрешено ли LINQ to SQL для push-системы изменять существующие таблицы?

Если для этой функции нет встроенного класса LINQ to SQL, какой наилучший способ приблизиться к этому?

Update:

Похоже, если это не представляется возможным. Я попросил добавить новую функциональность в .NET Framework. Проголосуйте за него, если вы также заинтересованы: connect.microsoft.com Feature Request.

Также см. Вопрос Is it possible to use Linq to ALTER a database table?.

+0

Итак, вы говорите, что у вас есть существующая база данных, изменяете структуры данных, перекомпилируете и хотите автоматически обновлять базу данных, чтобы она соответствовала? – Gabe

+0

@Gabe: Да. Возможно, с помощью метода, такого как DataContext.ModifyDatabase(), и он предоставит необходимые инструкции SQL для ALTER существующей таблицы. –

ответ

1

Я не знаю, как это сделать ... Я думаю, что, учитывая, что LINQ пытается отвлечь структуру db, это, вероятно, не правильный инструмент.

Я бы просто открыл соединение с базой данных и выполнил инструкции ALTER TABLE против необработанной базы данных.

+0

Я надеялся избежать этого, но у меня небольшие изменения, должно быть, все в порядке. –

0

Я думаю, что термин для поиска - это «миграция базы данных», популяризированный рубином на рельсах. Для .Net есть MigratorDotNet. Он не привязан к Linq To SQL (или любому другому ORM) вообще, но он может помочь в достижении того, что вы хотите выполнить.

some other implementations Вот для .Net

0

способ сделать передачу делает инструмент

1.- инструмент должен знать старую схему базы данных 2.- инструмент должен знать новую схему базы данных

с этим просто сделать методы для обновления базы данных, здесь пример

table Person (old)   table Person (new) 
    id       id 
    name       name 
            age 

затем выбрать все из старой базы данных, а затем создать новые строки в обновленной базе данных

new person { 
     id=oldPerson.id; 
     name=oldPerson.name 
     age=defaultAge; 
     } 
Смежные вопросы