在MVC entity framework 6中,通过控制器中存储的MySQL过程从多个表中获取结果

在MVC entity framework 6中,通过控制器中存储的MySQL过程从多个表中获取结果,mysql,asp.net-mvc,entity-framework,linq,stored-procedures,Mysql,Asp.net Mvc,Entity Framework,Linq,Stored Procedures,我在MVC应用程序中使用的是实体框架6,带有MySQL(注意MySQL)数据库。我使用以下代码从MVC中的控制器调用MySQL存储过程: List<ProductList> result = ent.Database.SqlQuery<ProductList>( "call select_product_data(@_surface, @_price)",

我在MVC应用程序中使用的是
实体框架6
,带有
MySQL
(注意
MySQL
)数据库。我使用以下代码从MVC中的控制器调用MySQL存储过程:

    List<ProductList> result = ent.Database.SqlQuery<ProductList>(
                                   "call select_product_data(@_surface, @_price)",
                                    new MySqlParameter("_surface", surfaceVal),
                                    new MySqlParameter("_price", priceVal)
                                ).ToList();
List result=ent.Database.SqlQuery(
“调用选择产品数据(@\u表面,@\u价格)”,
新的MySqlParameter(“_surface”,surfaceVal),
新的MySqlParameter(“_price”,priceVal)
).ToList();
这里ProductList是过程返回的所有属性的模型。我的程序代码:

     CREATE DEFINER=`root`@`%` PROCEDURE `select_product_data`
     (
        IN _surface LONG,
        IN _price LONG
     )
     BEGIN

     select * from product where surface < _surface  and price > _price limit 5;
     SELECT FOUND_ROWS() as cnt_total_product;

     END
CREATE DEFINER=`root`@`%`过程`select\u product\u数据`
(
在(u)面长,,
在价格长
)
开始
从表面<表面和价格>的产品中选择*价格限制5;
选择已找到的行()作为cnt_total_产品;
结束
我在相关的
结果
对象中获得了5个产品的列表,但我没有在结果中获得
cnt\u total\u product
的值。如何使用MVC中的Entity Framework 6在controller中获取列表和
cnt\u total\u product


我在互联网上搜索过这个,但是在MVC中使用MySQL和EF6没有任何帮助。

解决方法是返回完全相同的列类型,默认值为NULL,或者如果两个结果集都没有匹配的列并合并结果。 比如说

select "set1", col1, col2, col3, 0 from product where surface < _surface  and price > _price limit 5;

UNION ALL

SELECT "set2", NULL, NULL, NULL, FOUND_ROWS() as cnt_total_product;
从产品中选择“set1”、col1、col2、col3、0,其中surface<\u surface and price>\u price limit 5;
联合所有
选择“set2”、NULL、NULL、NULL、FOUND_ROWS()作为cnt_total_乘积;

现在通过过滤set1和set2在代码端拆分这些结果集

Stackoverflow.com/questions/20317971I我不能使用这种方法,因为我的第一个查询太复杂了,这只是为了理解目的。不能使用UNION ALL,因为表包含超过1-2个缺少记录,因此会降低查询性能如果您返回的结果集还包含1-2条lacs记录,我对此表示怀疑。但如果是的话,那么你应该考虑不同的方法,而不是将这么多记录返回到应用程序