В курсе Джули Лерманс по Entity Framework на Предприятии она создает базовый класс контекста, который выглядит следующим образом.EF/Database Initializor/Порядок выполнения
Public class BaseContext<Tcontext> : DBContext where Tcontext :DBContext
{
static BaseContext()
{
Database.SetInitializer<TContext>(null);
}
Protected BaseContext()
:base("connectionStringName")
{}
}
, который используется, как это:
public class xxxContext : BaseContext<xxxContext>
{
public Field A { get;set;}
}
Затем она продолжает говорить, для инициализации базы данных в ее хранилище будет выглядеть следующим образом
Database.SetInitializer(new MigrateDatabaseToLatestVersion<XXXXContext>())
using (var context = new xxxContext())
(
Assert.AreEqual(0, context.Customers.Count()));
)
Мой вопрос: В в последнем разделе кода (в этом примере) сначала выполняется Database.SetInitializer, устанавливая MigrateDatabaseToLatestVersion - инициализатор. Однако при создании контекста статический конструктор базового класса выполнял бы (Database.SetInitializer (null)) до того, как будет создан контекст. К моменту, когда код достигнет context.Customers.Count() - инициализатор будет NULL, и инициализатор по умолчанию затем выполнит (CreateIfDatabaseNotExists).
Я не прав? Как сохранить MigrateDatabaseToLatestVersion? Или это?
codputer, хорошо четко ответить и даже спросить. Джулия может писать статью в контексте (проблемной области/области), которая вам не понятна. Случается! Связываясь с этой статьей и задавая вопрос о том, чтобы вызвать путаницу или понять больше, будет обнадеживающим для всех. «Зная больше» - это Любопытство каждого. Happy Coding ... – jd4u
Я полностью согласен - однако курс в видео на Pluralsight, поэтому я думал, что это лучший способ задать вопрос. Затем я написал в твиттере ее, и она ответила (см. Ниже). У Джулии мое уважение, но мы все можем ошибаться. Я считаю, что это один, мне просто нужно было убедиться, что, насколько я знаю, она так хорошо понимает EF! – codeputer