首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NullReferenceException InsertOnSubmit: LINQ

NullReferenceException InsertOnSubmit: LINQ
EN

Stack Overflow用户
提问于 2009-01-31 19:57:07
回答 6查看 6.2K关注 0票数 16

我有这样的代码:

代码语言:javascript
复制
using DC = MV6DataContext;
using MV6; // Business Logic Layer
// ...

public DC.MV6DataContext dc = new DC.MV6DataContext(ConnectionString);
IP ip = new IP(Request.UserHostAddress);
dc.IPs.InsertOnSubmit(ip);
dc.SubmitChanges();

// in Business Logic layer:
public class IP : DC.IP {
  public IP(string address) { ... }
}

在尝试InsertOnSubmit(ip)时,我得到一个NullReferenceException (对象引用未设置为对象的实例)。dc不为空;ip和ip的所有属性都不为空;尽管某些属性为空。

VS2008不让我进入InsertOnSubmit,所以我没有办法在计算时明确知道什么是null。怎么回事?

注意:我已经检查过了,所有由FK关系创建的Linq.EntitySets都存在并且不为空。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-01-31 21:28:19

明白了。

我没有创建从DataContext的类继承的类,而是使用业务逻辑层中的分部类扩展了DC类本身。从那里我可以添加任何我想要的构造函数和方法。

在这种情况下,有必要从现有(自动生成的)构造函数中复制代码:

代码语言:javascript
复制
public IP(string address) {
Address = address;
Domain = "";
Notes = "";
FirstAccess = DateTime.Now;
LastAccess = DateTime.Now;
this._Sessions = new EntitySet<Session>(new Action<Session>(this.attach_Sessions), new Action<Session>(this.detach_Sessions));
OnCreated(); }

我不确定OnCreated处理程序中有什么,但它似乎正在做之前让我感到头疼的工作。现在可以正常工作了:)

票数 5
EN

Stack Overflow用户

发布于 2009-10-14 23:53:53

实际上,最好向构造函数添加一个调用,该调用也调用泛型构造函数,例如:

代码语言:javascript
复制
public IP(string address) : this() {
...
}
票数 10
EN

Stack Overflow用户

发布于 2009-02-10 16:32:20

由于默认构造函数已经初始化了base()、this._Sessions并运行了OnCreated方法,因此您在扩展构造函数中需要做的就是:

代码语言:javascript
复制
public IP(string address) : this()
{
    Address = address;
    Domain = "";
    Notes = "";
    FirstAccess = DateTime.Now;
    LastAccess = DateTime.Now;
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/499436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档