显示EntityRef列作为结果

时间:2018-02-03 18:47:56

标签: c# sql-server linq linq-to-sql

我是LINQ to SQL的新手,我得到了一个我不想要的测试程序的奇怪结果。 该程序是一个非常简单的WinForms应用程序,它在DataGridView中显示SQL结果。

这是我的数据库设置。 Image of Table relationships

以下是每个表的特定列信息。

Customer column info

Orders column info

最后这是通过MSMS显示的表的结果

Microsoft Server Management Studio select * results

这是我遇到的问题。 在建立与数据库的连接之后,我运行以下命令。

testingDatabase = new DataClasses1DataContext(SharedVariables.TestingConnection);
        var query = from Orders in testingDatabase.GetTable<ORDER>()
                    select Orders;
                    //select new { Orders.CUST_ID, Orders.ORDER_NUM, Orders.ORDER_DATE };
        return query;

它返回此。 Results shown from select * statement

我也试过这段代码

testingDatabase = new DataClasses1DataContext(SharedVariables.TestingConnection);
        var query = from Orders in testingDatabase.ORDERs
                    select Orders;
                    //select new { Orders.CUST_ID, Orders.ORDER_NUM, Orders.ORDER_DATE };
        return query;

然而结果是一样的。

然后我只能通过这样做得到我想要的结果

testingDatabase = new DataClasses1DataContext(SharedVariables.TestingConnection);
        var query = from Orders in testingDatabase.GetTable<ORDER>()
                    //select Orders;
                    select new { Orders.CUST_ID, Orders.ORDER_NUM, Orders.ORDER_DATE };
        return query;

然后我终于明白了。 Results after specifying select column

任何人都可以告诉我如何做“选择客户”并让它不显示显示“LINQ_Testing.CUSTOMER”的列。我怀疑是因为它是外键引起的,因为它在CUSTOMER类中创建了一个EntityRef变量。

1 个答案:

答案 0 :(得分:0)

尝试在Order类中添加Customer类的虚拟对象:

public virtual Customer customer { get; set; }

Order类中的外键关系(即cust_id)将自动延迟将Customer对象加载到其中。