在MVC entity framework 6中,通过控制器中存储的MySQL过程从多个表中获取结果
我在MVC应用程序中使用的是在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)",
实体框架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记录,我对此表示怀疑。但如果是的话,那么你应该考虑不同的方法,而不是将这么多记录返回到应用程序