Mam transakcji tabeli bazy danych (transactionID, LocalAmount ...). gdzie typem danych dla właściwości Localamount jest float. W interfejsie próbuję zwrócić SUMA kolumny (Localamount) w jednym wierszu zdarzenia kliknięcia przycisku.Przesyłanie na dziesiętne nie jest obsługiwane w kwerendach LINQ do jednostek Entry
Użyłem dziesiętny zamiast pływak
Jednak ja otrzymuję błąd w kodzie, gdzie jestem odlewania do dziesiętnych
System.NotSupportedException was unhandled by user code
Message=Casting to Decimal is not supported in LINQ to Entities queries, because the required precision and scale information cannot be inferred.
public static IEnumerable<TransactionTotalForProfitcenter> GetTotalTransactionsForProfitcenter(int profitcenterID)
{
List<TransactionTotalForProfitcenter> transactions = new List<TransactionTotalForProfitcenter>();
using (var context = new CostReportEntities())
{
transactions = (from t in context.Transactions
join comp in context.Companies on t.CompanyID equals comp.CompanyID
join c in context.Countries on comp.CountryID equals c.CountryID
where c.CountryID.Equals(comp.CountryID) && t.CompanyID == comp.CompanyID
join acc in context.Accounts
on t.AccountID equals acc.AccountID
join pc in context.Profitcenters
on t.ProfitcenterID equals pc.ProfitcenterID
group t by pc.ProfitcenterCode into tProfitcenter
select new TransactionTotalForProfitcenter
{
ProfitcenterCode = tProfitcenter.Key,
//the error is occurring on the following line
TotalTransactionAmount = (decimal)tProfitcenter.Sum(t => t.LocalAmount),
//the error is occurring on the following line
TotalTransactionAmountInEUR = (decimal)tProfitcenter.Sum(t => t.AmountInEUR) //the error is occurring on this line
}
).ToList();
}
return transactions;
}
Próbowałem kilka opcji następujące posty, ale bez powodzenia.
Czy ktoś może wskazać, jakie inne opcje mogą się staram. Przepraszam moją małą wiedzę na temat LINQ, jeśli jest zbyt trywialna.
To wydaje się wykonalne, ale pojawia się błąd {"Określona obsada od zmaterializowanego typu" System.Decimal "do typu" System.Double "jest niepoprawna."}. Dzieje się tak dlatego, że klasa Model dla transakcji zawiera podwójne dla właściwości LocalAmount i AmountInEuro, które ręcznie zmieniłem, ale następnie daje kolejny błąd typu "Edm.Double" członka "LocalAmount" w koncepcyjnym typie strony "CostReportModel.Transaction" nie pasuje do typu "System.Decimal" elementu "LocalAmount" w typie obiektu po stronie "CostReportModel.Transaction". – shaz
Niestety, są to oddzielne problemy z tego zapytania. Wygląda na to, że ty (lub ktoś z twojego zespołu) bawił się z twoimi istotami, co może być niebezpieczne. Możesz potrzebować osobnego, ** nowego ** pytania na temat bezpiecznej zmiany typów w modelu danych jednostki. –
Problem polega na tym, że jako pierwszy typ danych wprowadziłem w DB (brak wiedzy), a następnie zmieniono je na dziesiętne (ponieważ miałem problem z formatowaniem). Jednak model został wygenerowany automatycznie przez EF z float na double.Czy dobrze byłoby generować klasy jednostek, aby wypróbować to rozwiązanie? – shaz