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的成员和相关类不保证是线程安全的。
如何在模型第一次创建时才创建这些表?
已解决:在DbContextInitializer的Seed()
方法中增加SQL执行。