Golden Basim Ответов: 1

Как использовать хранимую процедуру с EF6 ?


привет,

я создал это представление :
CREATE OR REPLACE VIEW `view_items_accounts_tree_with_date` as
							SELECT Acitems.accitem_AccID,
                            acc.accdet_Cat,
                            acc.accdet_AccountCode,
										CONCAT_WS(' - ', acc.accdet_AccountCode, acc.accdet_LangAccName) AS MergName ,
									 	AcM.accm_ID,
                                        Acitems.accitem_ID,
                                        Acitems.accitem_Debit AS Debit,
										Acitems.accitem_Credit AS Credit,
										AcM.accitem_Date
                                         
						    FROM account_items Acitems
                                        
                               LEFT JOIN (SELECT Acmains.accm_ID,
                                            Acmains.accitem_Date
								  FROM account_main Acmains
								  GROUP BY Acmains.accm_ID,Acmains.accitem_Date) AcM
								ON Acitems.accm_ID = AcM.accm_ID
                                
                                LEFT JOIN (SELECT acct.accdet_ID,
									  acct.accdet_Cat,
									  acct.accdet_AccountCode,
									  acct.accdet_LangAccName
								  FROM accounts_detials acct
								  GROUP BY acct.accdet_ID) acc
								
				          	    ON Acitems.accitem_AccID = acc.accdet_ID;


затем я создал эту хранимую процедуру для выбора сумма кредитов , сумма дебета и баланс между двумя датами


CREATE PROCEDURE `getAccountsItems_WithDate_byDates`(in startDate Datetime, in endDate Datetime)
BEGIN
		SELECT 
        accdet_Cat,
        accdet_AccountCode,
        accitem_AccID,
		MergName,
		accm_ID,
        accitem_ID,
        accitem_Date,
			FORMAT(SUM(Debit),2) Debit ,
			FORMAT(SUM(Credit),2) Credit ,
			FORMAT((SUM(Debit)-SUM(Credit)),2) Balance
        FROM view_items_accounts_tree_with_date 
        where accitem_Date between startDate And  endDate
        Group By accitem_AccID;
END


Что я уже пробовал:

я использовал EF6 для заполнения TreeList или Gridview данными после создания функции импорта, но Balance (это пользовательский файл, который не существует в представлениях и не существует в таблице) возвращает null.

treeList1.DataSource = DB1.fncgetAccountsItems_WithDate_byDates(strat, end).ToList();

1 Ответов

Рейтинг:
5

Maciej Los

Пожалуйста, обратитесь к этому: Использование хранимой процедуры в Entity Framework[^]

Самое главное-это то, что вам нужно установить "Импорт выбранной хранимой процедуры в модель сущности"чтобы создать сложный тип и вернуть все поля в результате.

Заметить что "Баланс"поле рассчитано на "Дебет" и "Кредит"поля, так что вы всегда можете вычислить его во время выполнения.

treeList1.DataSource = DB1.fncgetAccountsItems_WithDate_byDates(strat, end)
    .ToList()
    .Select(x=> new
    {
        //re-write fields here
        //and add
        Balance = x.Debit - x.Credit
    })
    .ToList();


Удачи вам!


Golden Basim

спасибо

Maciej Los

Всегда пожалуйста.