Я бы посоветовал изучить инициализатор базы данных EF, в частности интерфейс IDatabaseInitializer
.
Если вы просто хотите, чтобы он прекратил создавать базу данных, когда она не существует, просто установите для инициализатора значение null
.Но если вы хотите записать событие или что-то в этом духе, просто создайте свой собственный IDatabaseInitializer
- это не сложно.
Затем вы можете установить инициализатор Application_Start
в вашем global.asax.cs следующим образом.:
Database.SetInitializer(new YourCustomInitializer());
В качестве бонуса приведу пример IDatabaseInitializer
, который я использую для запуска миграции баз данных (используя FluentMigrator ) ... это очень удобно, если я сам так скажу!
public class MigrationsDbContextInitializer : IDatabaseInitializer<YourDbContext>
{
private static readonly ILog Logger = LogManager.GetLogger(typeof(MigrationsDbContextInitializer));
public void InitializeDatabase(YourDbContext context)
{
var announcer = new BaseAnnouncer(x => Logger.Info(x));
var runnerContext = new RunnerContext(announcer)
{
Database = "sqlserver2008",
Connection = context.Database.Connection.ConnectionString,
Target = "YourEntitiesNamespace",
PreviewOnly = false,
Task = "migrate"
};
new TaskExecutor(runnerContext).Execute();
}
}