最近尝试将aps.net网站项目转换成asp.net应用程序,发现ef需升级到ef6。
遂删掉原先的edmx文件,重新生成edmx文件,再将addobject、deleteobject替换为add、remove。
查询、删除没问题,就是新增、修改,保存时出错:
System.NullReferenceException
HResult=0x80004003
Message=未将对象引用设置到对象的实例。
Source=<无法计算异常源>
StackTrace:
<无法计算异常堆栈跟踪>
修改的代码如下:
Dim db As New payEntities
Dim product As bs_Users = db.bs_Users.Where(Function(n) n.UserID = uid).FirstOrDefault()
product.LastLoginTime = Date.Now
db.SaveChanges()
查看上述代码中的product,发现有多个异常提示,如:
IsValid = “product.IsValid”引发了类型“System.Web.HttpException”的异常
CodePage = “product.CodePage”引发了类型“System.Web.HttpException”的异常
上述代码在之前ObjectContext模式下正常运行。
我又发现另一个地方的修改保存是成功的,代码如下:
Dim product = db.b_BUDGET.Where(Function(n) n.version_id = id And n.budget_item_id = item)
For Each p In product
p.amount = CType(ht.Item(p.period), Decimal)
Next
db.SaveChanges()
你这边也提到了有异常信息是空引用异常了,那你就需要考虑验证能否从DB里查到这些数据。在你的第一部分代码中,建议先验证一下 db.bs_Users.Where(Function(n) n.UserID = uid)
这个查询出来的是否有记录。
我发现,把另外一个用户管理的页面(bs_Users.aspx)排除项目外,登陆页面即代码一(Login.aspx)就正常了。
但我想不明白,这两个独立的page为啥会影响?