尝试执行简单的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
答案 0 :(得分:0)
实际例外是什么?由于您使用的是try catch并抛出自己的InvalidOperationException,因此无法看到实际的。 由于对象的当前状态,操作无效 - 只是InvalidOperationException的一般错误消息。
答案 1 :(得分:0)
感谢大家的帮助。我们解决了这个问题,在ssdl文件中,实体集并没有将数据库列映射到实体。