【问题标题】:LINQ DataContext.SubmitChanges() in C# Reporting "Object reference not set to an instance of an object."C# 报告“对象引用未设置为对象的实例”中的 LINQ DataContext.SubmitChanges()。
【发布时间】:2009-10-07 06:12:41
【问题描述】:

我想很多人都遇到过这个问题,但我无法解决它或理解我为什么会遇到这个问题。我已经把头发扯了几个小时了。

我收到错误消息“对象引用未设置为对象的实例。”在我的 datacontext.SubmitChanges() 上第二次运行此方法(我正在循环一组 ObjectName 字符串):

    private Object CreateObject(string ObjectName, SystemClassEnum SystemClass)
    {
        Object result = new Object();
        result.Name = ObjectName;
        result.SystemClassID = (int)SystemClass;
        _dataContext.Objects.InsertOnSubmit(result);
        _dataContext.SubmitChanges();
        return result;
    }

我以为是因为 result.Name 值可以为空,但我不这么认为了。

似乎 dataContext 正在以某种方式关闭?但是在调试模式下,我会检查连接的状态,错误发生后它是“打开”的。

我正在使用存储库模式和 ASP.NET MVC。

结果对象 (new Object()) 是 LINQ DBML 自动生成的类的一个实例,该类还具有我创建的部分类,该类附加了一个扩展方法。我看不出类的扩展是如何导致问题的。

我没有想法。

有什么想法吗?感谢您提供的任何帮助!

最好的问候,

埃里克

【问题讨论】:

    标签: c# linq linq-to-sql submitchanges object-reference


    【解决方案1】:

    不要调用你的类型之一Object - 这是一个非常糟糕的主意;你会后悔的...选择一个不同的名字...(或System等)。

    您确定错误实际上不在上面一行(_dataContext.Objects. 等)吗?不幸的是,您没有显示任何与_dataContext 相关的代码(例如,它可能已变为null),并且您没有说明(例如)您是否已将任何partial 方法添加到数据上下文或实体,或有任何事件。我希望问题出在这些领域之一。

    【讨论】:

    • 啊,但是 Marc,使用这样的名称是极好的代码混淆。这样就不需要任何讨厌的编译后混淆器。在编码字体中不突出的带有重音和点的字符可用于使其几乎无法检测... :) namespace System { public class objẹct { } }
    • @KristoferA- 更像是将您的代码变成日常 WTF 条目的绝佳方式。 @Marc- +1 强调这是个坏主意!
    • @RichardOD 我在讽刺... :)
    • 这段代码出现在我的“存储库”中,在它的构造函数中,我让它从我的 DBML 创建一个 DataContext 的实例: private DataClassesDataContext _dataContext;公共 SQLServerMMRepository() { _dataContext = new DataClassesDataContext();抛出的错误出现在一行:_dataContext.SubmitChanges();不是:_dataContext.UserRelationshipInstances.InsertOnSubmit(result);我听到你谈论我正在做的大写 Object 的事情,但我认为这不是问题所在。为什么我的数据上下文在重复调用后会变成“非引用”?
    • 我仍然没有解决这个问题。有什么想法吗?我认为我的问题是我想转换、转换、转换,无论 DBML 对象返回到不同的类中,并且让这些类也具有从数据库中提取不同视图的扩展方法。创建我的存储库和业务对象的实例似乎会使 DataContext 窒息。对我有什么建筑方面的想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    相关资源
    最近更新 更多