【问题标题】:Mono on Debian 7 Linq To SQL String object reference not set to an instance of an objectMono on Debian 7 Linq To SQL String 对象引用未设置为对象的实例
【发布时间】:2014-09-02 19:06:06
【问题描述】:

您好,我是 Linux 和单声道的新手。我正在使用 Mono 3.6 和 Debian 7.6

我不断收到未设置为对象实例的对象引用。我使用与 VS 2013 在 Windows 上编译的代码相同的代码,它运行良好。

  string connstring = string.Format
("Data Source={0},{1};Initial Catalog={2};User ID={3};Password={4};Application Name={5};Connect Timeout=120",
   IP, Port, database, Username, Password, InstanceID);

 settings = new ConnectionStringSettings("sqlServer", 
                                       connstring, "System.Data.SqlClient");


 using (data = new SwitchDataDataContext(settings.ConnectionString)){
                   BlockList.Clear();
                    foreach (var item in data.BlockLists)
                    {// so this works
                        if (BlockList.ContainsKey(item.TN) == false)
                            BlockList.TryAdd(item.TN, item.TN);
                        }
// this is where it crashes
  var custs = data.CustomerGateways.Where(p => p.isEnabled == true);

}

当我调用代码时,它会引发异常。

知道可能出了什么问题吗?

在 Windows 上运行良好。

我将异常写入屏幕。 DbLinq.Data.Linq.Mapping.AttributedMetaType+c__Iterator0.MoveNext() [0x00000] in :0 在 System.Collections.Generic.List System.Data.Linq.Mapping.MetaAssociation .AddEnumerable

【问题讨论】:

    标签: c# sql linux linq mono


    【解决方案1】:

    好的,我想通了。在你有连接的所有表的 Linq's Map 中。这些联接需要是内部的而不是公开的。过去,当我必须序列化数据时,我已经这样做了。出于某种原因公开,例如 PK 循环。

    无论哪种方式,在 Linq Map 中将事物更改为 internal 并且它可以工作。

    【讨论】:

    • 使用单声道的问题太多。延迟加载根本不起作用。我搬到了EF,这也有问题。我收到错误说数据集已经打开。唯一的解决方法是做 .tolist().. 我正在考虑迁移到 ADO
    • 请接受您的回答以结束此问题。 EF 的设计完全没有考虑 Mono,Mono 以类似的方式发展。所以 NHibernate 风格的开源项目在 Mono 上比 EF 工作得更好。由于微软转而使用 Mono(为了 ASP.NET vNext 的缘故),我们应该会在接下来的几周内看到更多的错误被修复。
    猜你喜欢
    • 2013-09-11
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多