EF:在onmodelcreate中创建不被EF跟踪的表

本文关键字:EF 跟踪 创建 onmodelcreate | 更新日期: 2023-09-27 18:17:51

我试图通过执行一些SQL来创建一些表,实体框架不应该意识到,在OnModelCreating方法(覆盖):

// This code creates the Auxiliary tables task
Trace.TraceInformation("Creating auxiliary tables.");
using (StreamReader reader = new StreamReader(GetResourceStream(String.Concat("My.Namespace.Resources.","CREATE_AUX_TABLES.SQL")))) {
    int i;
    var builder = new StringBuilder();
    do {
        i = reader.Read();
        if (i > 0) {
            builder.Append((char) i);
            if (i == 0x3B) {
                string sql = builder.ToString().Trim();
                Trace.WriteLine("Submitting SQL:");
                Trace.WriteLine(sql);
                Database.ExecuteSqlCommand(sql);
                builder.Clear();
            }
        }
    } while (i > 0);
}

我得到一个异常:

系统。的时候不能使用上下文正在创建模型。如果上下文是,则可能引发此异常在OnModelCreating方法中使用,或者在相同的上下文实例中使用由多个线程并发访问。注意实例DbContext的成员和相关类不保证是线程安全的。

如何在模型第一次创建时才创建这些表?

EF:在onmodelcreate中创建不被EF跟踪的表

已解决:在DbContextInitializer的Seed()方法中增加SQL执行。