2016-02-25 30 views
0

我在MVC應用程序中使用Entity Framework 6MySQL從一個MySQL的存儲過程的多個表的結果(注意:MySQLSQL)數據庫。我所說的MySQL的存儲過程從控制器MVC用下面的代碼:獲取在MVC實體框架控制器6

List<ProductList> result = ent.Database.SqlQuery<ProductList>(
            "call select_product_data(@_surface, @_price)", 
            new MySqlParameter("_surface", surfaceVal), 
            new MySqlParameter("_price", priceVal) 
           ).ToList(); 

這裏產品列表是所有屬性該程序返回模型。我的程序代碼:

 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 

我得到5種產品的清單在我相關result對象,但我沒有得到的cnt_total_product的結果值。如何在MVC中使用實體框架6獲得控制器中的列表以及cnt_total_product值?

我在互聯網上搜索了這個,但沒有任何幫助我在MVC中使用MySQLEF6

+0

Stackoverflow.com/questions/20317971 – DhavalR

+0

,因爲我的第一個查詢是太複雜,我不能使用這種方法,這是分裂的代碼方面,這些結果集只是爲了理解目的。 –

回答

0

解決方法是返回完全相同的列類型,並使用默認值(如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; 

現在,通過過濾設置1和設置2

+0

無法使用UNION ALL,因爲表中包含多於1-2條的Lack記錄,因此它會降低查詢性能 –

+0

如果您返回的結果集也包含我懷疑的1-2個lacs記錄,則查詢性能將受到影響。但如果是的話,那麼你應該想到不同的方法,而不是將這些許多記錄返回給應用程序。 –

+0

我通過分頁使用LIMIT將12-12條記錄返回給我的應用程序 –