2015-03-31 1 views
0

Я использую Entity Framework и хочу внести некоторые изменения в класс контекстаЗапретить компилятор прекратить отменять мои изменения в классах T4. Enitity Framework

Для примера. Я создаю еще один конструктор для строки подключения, но проблема возникает каждый раз, когда я открываю файл .edmx и сохраняю его, тогда мои изменения больше не существуют.

Есть ли способ сообщить мне .edmx не отменять мои изменения в классе классов или классах Т4?

ответ

5

Вы не можете изменить сгенерированный код. Вы можете добавлять к нему вещи, поскольку классы, которые генерируются, являются частичными классами.

Добавьте свои дополнения в отдельный файл, содержащий пользовательскую часть частичного класса.

Смотрите здесь: https://msdn.microsoft.com/en-us/library/wa80x488.aspx

+0

Спасибо большое. Это очень полезно. – Parveen

0

Альтернатива для изменения шаблона T4 самостоятельно и последовательно применять ваши конкретные потребности в сгенерированных классов. Это обычная практика, когда вы, например, хотите, чтобы интерфейс INotifyPropertyChanged как интерфейс для каждого класса. Этот подход работает только в том случае, если ваши изменения носят общий характер. Если вы хотите сделать конкретное изменение только в одном классе, это решение не сработает для вас.

Другой альтернативой является полный контроль над классами с использованием кода в первую очередь. Вы можете отметить методы и свойства специальными атрибутами, чтобы сопоставить их с db. И есть альтернативный вариант для создания этих классов из существующего db. Вы должны были бы развернуть один раз, а затем взять под контроль классы и подстроить их под свои нужды.

Обычно я беру последний подход самостоятельно, потому что он не использует частичные классы, все коды, принадлежащие классу, все в тот же файл.

Ответ Маартен также прекрасен, но есть еще два варианта.