Однако, хотя конструктор вызывается каждый раз, метод OnModelCreating вызывается только один раз, несмотря на то, что контекст базы данных каждый раз создается из нового. Как мне сбросить это значение?
Я пробовал использовать AsNoTracking и читал об отключении ModelCaching, но не смог понять, как это сделать или было ли это лучший подход. MSDN даже говорит, что «это кеширование можно отключить, установив свойство ModelCaching для данного ModelBuidler[sic]», но его там нет.
Это мой контекст БД:< /p>
Код: Выделить всё
public partial class MissingContext : DbContext
{
private string tableName = "";
public MissingContext(string tableName) : base("name=MissingContext")
{
this.tableName = tableName;
}
public virtual DbSet MissingDataSet { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity()
.ToTable(this.tableName);
}
}
Код: Выделить всё
List missingData=null;
string[] inputTables="TABLEA;TABLEB;TABLEC".Split(';');
foreach (string table in inputTables)
{
logger.Info($"Processing {table}");
missingData = null;
MissingContext db = new MissingContext(table);
var query = from d in db.MissingDataSet.AsNoTracking()
select d;
missingData = query.ToList();
}
Код: Выделить всё
SELECT
[Extent1].[id] AS [id],
[Extent1].[OrganisationName] AS [OrganisationName]
FROM [dbo].[**TABLEA**] AS [Extent1]
Подробнее здесь: https://stackoverflow.com/questions/491 ... w-contexts