实体框架5 Linq插入查询:操作无效

时间:2016-06-13 17:36:01

标签: c# entity-framework linq webforms

尝试执行简单的linq插入查询时出错。

  

异常:由于对象的当前状态,操作无效。

这是我的linq查询:

private void addEntry(string hqname, string hqaddress, string hqcity,
                      int hqzip, string hqstate, string hqcountry)
{
    using (var db = new dbcontext())
    {
        try
        {
            var dbObj = new dbObj();
            dbObj.HQName = hqname;
            dbObj.HQAddress = hqaddress;
            dbObj.HQCity = hqcity;
            dbObj.HQZip = hqzip;
            dbObj.HQState = hqstate;
            dbObj.HQCountry = hqcountry;
            db.tblName.Add(dbObj);
            db.SaveChanges();
        }
        catch
        {
            throw new InvalidOperationException();
        }
    }
}

这是我称之为这种方法的地方:

addCompanyHeadquarters(tbCompanyName.Text, addressInput.HQAddress, addressInput.HQCity, Convert.ToInt32(addressInput.HQZip), addressInput.HQState, "United States"); 

堆栈追踪:

  

[InvalidOperationException:由于对象的当前状态,操作无效。]          addCompanyHeadquarters(String hqname,String hqaddress,String hqcity,Int32 hqzip,String hqstate,String hqcountry)in          Button3_Click(Object sender,EventArgs e)in          System.Web.UI.WebControls.Button.OnClick(EventArgs e)+9692746          System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)+108          System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)+12          System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument)+15          System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)+35          System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+3562

我一直试图调试一段时间,这个错误真的让我陷入了一个循环。我不确定下一步该怎么做。非常感谢任何前进的提示。一些信息:我必须将id数据库列更新为自动增量,然后更改相应表和edmx

列的StoredGeneratedPattern: True文件后 来自Egor Semenenko建议的

更新:我添加了更改我抛出 throw; 的异常: 继承我的新堆栈跟踪: 实体类型不是当前上下文模型的一部分 [InvalidOperationException:实体类型tblName不是当前上下文的模型的一部分。]

System.Data.Entity.Internal.InternalContext.UpdateEntitySetMappingsForType(Type entityType) +196
   System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +38
   System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() +52
   System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext() +15
   System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName) +64
   System.Data.Entity.Internal.Linq.InternalSet`1.Add(Object entity) +108
   System.Data.Entity.DbSet`1.Add(TEntity entity) +42
  addCompanyHeadquarters(String hqname, String hqaddress, String hqcity, Int32 hqzip, String hqstate, String hqcountry) in 
   Button3_Click(Object sender, EventArgs e) 
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9692746
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +12
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +15
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3562 

2 个答案:

答案 0 :(得分:0)

实际例外是什么?由于您使用的是try catch并抛出自己的InvalidOperationException,因此无法看到实际的。 由于对象的当前状态,操作无效 - 只是InvalidOperationException的一般错误消息。

答案 1 :(得分:0)

感谢大家的帮助。我们解决了这个问题,在ssdl文件中,实体集并没有将数据库列映射到实体。