2

我正在开发一个 EntityFramework 应用程序,并且在使用结构而不是带有 Database.SqlQuery 的类时遇到了问题。

该结构如下所示:

internal struct Column
{
    public int object_id { get; set; }
    public string name { get; set; }
}

对 SqlQuery 的调用如下所示:

using (var db = new DbContext("ConnectionString"))
{
    var columns = db.Database.SqlQuery<Column>(query);
    DoSomething(columns.ToList()); // Exception thrown here
}

当 Column 是结构时,我收到带有消息“'MyService.Column' 类型的表达式不能用于返回类型'System.Object'”的 ArgumentException。我把它改成了一个类,它工作正常。

我很高兴在这里使用一个类,但我想知道为什么以这种方式使用结构会失败。

4

2 回答 2

4

EntityFramework 为您的数据提供面向对象的表示。因此,结果需要是一个对象,因为它必须保持状态。如果使用结构,则每次在方法之间传递列时都会复制数据,这是没有意义的,因为它代表数据库中的相同值。

于 2012-06-19T16:14:57.980 回答
0

结构不是对象,EF 希望将列作为 Object 基类型返回。

于 2012-06-19T16:09:57.620 回答