В нашем проекте MVC 5 наш контекст базы данных экземпляра в AccountController
как этотEntity Framework 6 DbContext не сохраняя изменения
private CustomersContext _customersContext;
public CustomersContext CustContext
{
get
{
return _customersContext ?? new CustomersContext();
}
private set
{
_customersContext = value;
}
}
Каждый клиент упоминается в ряде источников. Нижеприведенная процедура изменяет UserId источника реферала на нового пользователя.
var referralList = CustContext.Referrals.Where(d => d.UserId == membershipUser.Id);
foreach (Referral referral in referralList)
{
referral.UserId = newUser.Id;
}
Stepping корыта код можно увидеть referral.UserId
обновляется. Однако
var result = await CustContext.SaveChangesAsync();
возвращает 0. База данных не обновляется.
CustomersContext
выглядит следующим образом
{
public partial class CustomersContext : IdentityDbContext<ApplicationUser>//, ICustomersContext
{
public CustomersContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static CustomersContext Create()
{
return new CustomersContext();
}
public virtual DbSet<ReferralSource> ReferralSources { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<ApplicationUser>()
.HasMany(e => e.Referrals)
.WithRequired(e => e.User)
.HasForeignKey(e => e.UserId)
.WillCascadeOnDelete(false);
Я не вижу каких-либо SQL, излучаемого в SQL Profiler. Почему изменения в базе данных не изменяются?
Попробуйте окружив его попробовать/уловом http://stackoverflow.com/questions/ 28427473/how-can-i-confirm-if-an-async-ef6-wait-db-savechangesasync -работал-как-ожидалось –
Попробуйте использовать только SaveChanges(), без async – syned
Я попробовал обернуть его в try/catch блок. Никакое исключение не выбрасывается. Я попробовал SaveChanges (без async). Никакие записи не обновляются. – Vague