我正在处理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为结构时,出现ArgumentException消息,提示“类型'MyService.Column'的表达式不能用于返回类型'System.Object'”。我将其更改为一类,并且效果很好。

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

最佳答案

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

关于c# - 使用struct而不是类的EntityFramework SqlQuery失败,出现ArgumentException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11104892/

10-13 07:09