MySQL Net Connector问题

时间:2011-03-29 02:48:47

标签: c# .net mysql

我正在使用MySQL Net Connector(http://dev.mysql.com/downloads/connector/net/)并将MySQL数据库导入Visual Studio(ADO.NET实体数据模型)并创建关系

我现在想要将数据库中的一些数据收集到我的自定义业务实体中,并按如下方式对路由进行编码:

public List<Property> GetProperties()
{
    using (ncsEntities dataContext = this.ncsDataContext)
    {

        // Begin Test #1
        var q1 = from p in dataContext.ra_properties.Top("3")
                 where p.street_id > 0
                 select p;

        List<ra_properties> list1 = q1.ToList();
        // End Test #1   list2 is populated as expected
        // The property ra_streets is populated and is not null


        // Begin Test #2
        var q2 = from p in dataContext.ra_properties.Top("3")
                 where p.street_id > 0
                 select new Property
                 {
                     Key2 = p.valuation_id,
                     Address = "Some Dummy Value"
                 };

        List<Property> list2 = q2.ToList();
        // End Test #2
        // list2 is populated as expected.


        // Begin Test #3
        var q3 = from p in dataContext.ra_properties.Top("3")
                 where p.street_id > 0
                 select new Property
                 {
                     Key2 = p.valuation_id,
                     Address = (p.ra_streets == null || p.ra_streets.address_1 == null) ? string.Empty : p.ra_streets.address_1
                 };

        List<Property> list3 = q3.ToList();
        // End Test #3
        // This Test Fails.  The exception message is
        // Object reference not set to an instance of an object.

        return list3;

    }
}

我无法弄清楚为什么最后一次测试不起作用。它失败,异常消息对象引用未设置为对象的实例。 任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

我认为您需要在查询中添加对 ra_streets 的明确引用。 我现在无法测试它,但似乎是这样。

尝试将其更改为

// Begin Test #3
var q3 = from p in dataContext.ra_properties.Include("ra_streets").Top("3")
         where p.street_id > 0
         select new Property
         {
             Key2 = p.valuation_id,
             Address = (p.ra_streets == null || p.ra_streets.address_1 == null) ? string.Empty : p.ra_streets.address_1
         };

看看它是否有效?