我试图通过执行一些实体框架不应该知道的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和相关类的成员 线程安全。
如何在首次创建模型时创建这些表?
答案 0 :(得分:0)
已解决:在DbContextInitializer的Seed()
方法中添加了SQL执行。