【问题标题】:What is my generic type/entity? (For Database.SqlQuery)我的通用类型/实体是什么? (对于 Database.SqlQuery)
【发布时间】:2013-06-11 12:44:16
【问题描述】:

目标

我想使用 C# + MVC 4 + Entity Framework 5 在我的控制器上调用存储过程。

问题

我发现this topic 谈论“如何将 DbContext.Database.SqlQuery(sql, params) 与存储过程一起使用?EF Code First CTP5”,这正是我所需要的。

在主题中我们有如下代码:

context.Database.SqlQuery<myEntityType>(
    "mySpName @param1, @param2, @param3",
    new SqlParameter("param1", param1),
    new SqlParameter("param2", param2),
    new SqlParameter("param3", param3)
);

如您所见,有一个名为 myEntityType 的泛型类型 (?),我不知道我的实体类型是谁。

我使用的是 Entity Framework 5,我所有的 CRUD 都是由他生成的。

详情

我想要的很简单(我猜):在我的视图中显示过程的返回。上面的代码是我在 ProductsController 上的:

//
// GET: /Products/
public ActionResult Index()
{
    return View(db.bm_products.ToList());
}

我想在这个方法中显示返回。

我有什么

也许myEntityTypebm_products

提前致谢。

【问题讨论】:

    标签: c# sql entity-framework asp.net-mvc-4


    【解决方案1】:

    myEntityTypeTElement 是应创建用于容纳结果的对象类型。如果您的程序这样做:

    SELECT FieldA FROM table
    

    那么你需要一个这样的类:

    public class myEntityType
    {
        public string FieldA { get; set; }
    }
    

    其中myEntityType 是该类型的类名 - 这取决于您。

    【讨论】:

    • 你说得对吗,迈克尔。我的实体是bm_products。现在的问题是参数——似乎不起作用。 “当前上下文中不存在名称‘parameter1’。”。我将更新我的主题,顺便感谢您的帮助!
    • @chiefGui,我不知道mySpName 会返回什么。但我要说的是,您要询问的 myEntityType 是存放结果的类,因此它需要映射到存储过程中的 SELECTed。
    • 但是迈克尔,你是对的! bm_products 正在返回我需要显示的字段。
    • @chiefGui,你是说现在用bm_products 代替myEntityType 可以正常工作了吗?
    • 是的,@MichaelPerrenoud! =)
    【解决方案2】:

    当您调用具有两个输出参数的存储过程时,myEntityType 会怎样,这两个输出参数在存储过程中都是 varchar 类型。这两个输出参数不是任何表的列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多