EF:在OnModelCreating中创建EF未跟踪的表格

时间:2015-10-15 20:28:45

标签: c# sql entity-framework

我试图通过执行一些实体框架不应该知道的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);
}

我得到一个例外:

  

System.InvalidOperationException:当使用上下文时不能使用   正在创建模型。如果上下文,则可能抛出此异常   在OnModelCreating方法内部使用,或者如果是相同的上下文实例   由多个线程同时访问。请注意该实例   不保证DbContext和相关类的成员   线程安全。

如何在首次创建模型时创建这些表?

1 个答案:

答案 0 :(得分:0)

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