【问题标题】:Entity Framework DbContext won't save data into database实体框架 DbContext 不会将数据保存到数据库中
【发布时间】:2015-04-16 09:17:52
【问题描述】:

我正在尝试在 EF 中做最简单的事情,将数据记录保存到数据库表中。

一切顺利,模型被创建、添加和保存,但是当我走到桌子前时,什么都没有......

有人看到我做错了吗?

这是我的DbContext:

public class AuthContext : IdentityDbContext<ApplicationUser>
{
    public AuthContext() : base("AuthContext")
    {
    }

    public virtual DbSet<TransferResponse> Transactions { get; set; }
    public virtual DbSet<FailCounter> Fails { get; set; } 
}

这是我的模型:

public class FailCounter
{
    [Key]
    public int Id { get; set; }
    public string UserId { get; set; }
    public int FailCounterValue { get; set; }
}

这是保存的代码:

using(AuthContext dbcnt = new AuthContext())
{
    var userId = repo.FindByUserName(model.DeviceId);
    FailCounter failCount = new FailCounter();
    failCount.FailCounterValue = 1;
    failCount.UserId = userId.Id;
    dbcnt.Fails.Add(failCount);
    dbcnt.SaveChanges();
    return Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Invalid username or password.");
}

我使用调试器并没有发现任何东西... userId 不为空,因此该行不是问题。没有例外,什么都没有,但是数据库又是空的。

【问题讨论】:

  • “去表”是指通过数据库工具在 VS 中查看它还是在代码中选择值?如果是第一个:也许您只是在查看错误的数据库,而 EF 正在使用不同的 ConnectionString。
  • @germi both...我什至从 SQL Managment Studio 中查看过...在调试过程中,我也检查了值是否正确:-/
  • 您的代码是否会错误地指向“测试”数据库(例如,(localdb)\v11.0 数据库)?
  • 运行 SQL Profiler 以查看执行了哪些 SQL 语句。 SaveChanges 的返回值是多少?您是否使用了未提交的事务?
  • @PanagiotisKanavos 我刚刚做过,它一直在保存值。首先,我重新启动了 SQL MS,然后重新启动了 VS,仍然没有,在我重新启动机器后,所有数据都在那里......完全奇怪的情况,但它毕竟有效。谢谢大家!

标签: c# asp.net entity-framework


【解决方案1】:

试试这个而不是FailCounter failCount = new FailCounter();
试试这样FailCounter failCount = dbcnt.Fails.Create();

【讨论】:

  • 好吧,如果它有效,那就太好了,但Add 也应该这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-12
  • 2016-08-11
  • 2014-10-28
相关资源
最近更新 更多