여기에 문제가 있습니다. 나는 SQL 필드의 최대 값을 얻으려고했습니다.
LastInvoiceNo = Convert.ToInt64(dbContext.InvoiceMaster.Max(e => e.InvoiceNo));
그러나 "InvoiceNo"의 열 유형이 varchar이기 때문에 잘못된 값을 제공합니다. 그래서 나는 그것을 Int64로 변환하려고했습니다.
LastInvoiceNo = dbContext.InvoiceMaster.Max(e =>Convert.ToInt64(e.InvoiceNo));
과
LastInvoiceNo = dbContext.InvoiceMaster.Select(e => Int64.Parse(e.InvoiceNo)).Max();
그러나 예외가 발생합니다.
LINQ to Entities는 'Int64 Parse (System.String)'메서드를 인식하지 않으며이 메서드는 저장소 식으로 변환 할 수 없습니다.
오류가 발생하는 이유는 EF가 linq 쿼리를 실제 SQL 문으로 변환하려고하지만 불가능하기 때문입니다.
당신이 할 수있는 일은 쿼리를 강제 실행하여 데이터를 로컬로 가져 오는 것입니다. 그러면 Int64로 변환하고 Max를 확인할 수 있습니다.
이 같은:
LastInvoiceNo = dbContext.InvoiceMaster.ToList().Max(e => Convert.ToInt64(e.InvoiceNo));
해당 테이블에 수백만 개의 행이있는 경우 이것이 최선의 방법인지 확실하지 않습니다.
건배
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다