【问题标题】:Entity Framework 5 failure while adding a new record of a specific object添加特定对象的新记录时实体框架 5 失败
【发布时间】:2019-01-11 14:54:27
【问题描述】:

我真的不知道如何解决这个问题,我习惯用这种方式使用实体框架添加或删除对象。 我在调试模式下运行我的应用程序并遵循它。 调试器继续没有问题,然后我查看数据库以获取新记录,但什么也没有发生。

 private dbClinics _context;
    public dbClinics context { get { return new dbClinics(); } set { _context = value; } }
    #endregion

    private void _AddProfession(string ProfessionName)
    {
        if (!context.Professions.Any(x => x.ProfessionName.ToLower().Equals(ProfessionName.ToLower())))
        {
            Profession profession = new Profession();
            profession.ProfessionName = ProfessionName;
            context.Professions.Add(profession);
            context.SaveChanges();
        }
    }

这是连接字符串:

<add name="dbClinics" connectionString="metadata=res://*/ADO.dbClinics.csdl|res://*/ADO.dbClinics.ssdl|res://*/ADO.dbClinics.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=mld\markinstance;initial catalog=beta_clinics;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /></connectionStrings>

当然我已经确保表自动增加其主键

【问题讨论】:

  • 还有什么问题,你在sql server中刷新数据库了吗?
  • @MehrdadDowlatabadi 是的,我做了很多次
  • 在 savechange 方法后添加这一行并在其后设置断点: var p1= context.Professions.Select(p=>p.ProfessionName ==ProfessionName);
  • @MehrdadDowlatabadi 我添加了 .FirstOrDefault() 它返回 FALSE;
  • 如果您没有收到异常关闭 SSMS 并重新打开。可能不会刷新。如果您仍然没有获得数据,则连接字符串指向不同的数据库。 c# 中的连接字符串应与 SSMS 中的登录窗口匹配,包括服务器名称和数据库实例(服务器名称\实例)。

标签: c# sql-server entity-framework-5


【解决方案1】:

注意您的上下文属性,它会为每次调用重新创建 dbcontext,因此您添加实体的上下文与您调用保存更改的上下文不同 请管理 dbcontext 生命周期 - 最好使用 using 语句

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多