Я использую Entity Framework и хранимые процедуры.
modelBuilder.Entity<MyModel>().MapToStoredProcedures();
Я использовал Вставить обновление и удалить без проблем. Но для каких-то целей я хочу использовать AutoDetectChangesEnabled = false;
После этой сущностибольше не работает и ничего не меняется в базе данных после SaveChanges
.Но когда я комментирую AutoDetectChangesEnabled
или устанавливаю значение true, он работает нормально.
Это мой код: я читаю из Excel и импортирую в базу данных:
dt = exc.ReadExcel(address, ".xlsx");
using (var db = new Context())
{
db.Configuration.AutoDetectChangesEnabled = false;
for (int i = 1; i < dt.Rows.Count; i++)
{
int id = int.Parse(dt.Rows[i][0].ToString());
var thisChah = db.MyModel.Find(id);
if (thisChah == null)
{
continue;
}
thisChah.f1 = dt.Rows[i][1].ToString();
thisChah.f2 = dt.Rows[i][2].ToString();
thisChah.f3 = dt.Rows[i][3].ToString();
thisChah.f4 = dt.Rows[i][4].ToString();
thisChah.f5 = dt.Rows[i][5].ToString();
thisChah.f6 = dt.Rows[i][6].ToString();
thisChah.f7 = dt.Rows[i][7].ToString();
LogsAnyThing("row " + i + "- OK ");
if(i % 50 == 0)
{
int result = db.SaveChanges();
if (result > 0)
{
LogsAnyThing("row " + i + "- Added ");
}
}
}
db.SaveChanges();
}