我正在处理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/