尝试从数据库中检索时出错

Error when trying to retrieve from database

我已经从 XSD 模式生成了三个 classes:

public partial class PathDetailsMessage {
    private MessageHeader messageHeaderField;

    public MessageHeader MessageHeader {
        get {
            return this.messageHeaderField;
        }
        set {
            this.messageHeaderField = value;
        }
    }
}


public partial class MessageHeader {
    private Recipient recipientField;

    public Recipient Recipient {
        get {
            return this.recipientField;
        }
        set {
            this.recipientField = value;
        }
    }
}


public partial class Recipient {
    private string valueField;

    public string Value {
        get {
            return this.valueField;
        }
        set {
            this.valueField = value;
        }
    }
}

当我尝试将 id 的值(它是数据库中的一个字符)放入 medusa.MessageHeader.Recipient.Value 时,出现错误(见下文):

if (dr.HasRows)
{
  dr.Read();
  medusa.MessageHeader.Recipient.Value = Convert.ToString(dr["id"]);
  dr.Close();
}

我收到以下错误:

System.NullReferenceException: 'Object reference not set to an instance of an object.'

PathDetailsMessage.MessageHeader.get returned null.

我使用以下 SQL 字符串:

string sqlString = "SELECT id FROM view_otf WHERE id LIKE '%079%'";

id 列在数据库中是 CHAR。

我想不出这个问题的解决方案。

你能帮帮我吗?

谢谢。

LE: 这 3 个 class 在同一个 .cs 文件中。

LE2: medusa 是从 PathDetailsMessage.cs 文件初始化的对象,class 从 XSD schema

PathDetailsMessage medusa = new PathDetailsMessage();

我们缺少 medusa 初始化代码,但您应该这样做:

medusa.MessageHeader = new MessageHeader {
    Recipient = new Recipient()
};
medusa.MessageHeader.Recipient.Value = Convert.ToString(dr["id"]);

这是因为像 PathDetailsMessage 这样的 class 的初始化不会为 MessageHeader 属性 设置任何值,后者将为 null。这同样适用于 Recipient 属性。所以通过上面的初始化,你将有一些对象来存储值。