GUID
을 생성 한 다음이를 NVARCHAR
으로 반환하는 저장 프로 시저를 만들었지 만 LINQ to SQL을 사용하여 액세스하려고 시도하면 저장 프로 시저가 ISingleResult
. 나는 예상대로 같은 일한 많은 다른 절차를 만들었습니다 : 나는 다음과 같은 오류를 얻을 다음 절차를 사용하여 같은 일을 수행하려고하지만저장 프로 시저가 ISingleResult로 LINQ to SQL에서 인식되지 않음
CREATE PROCEDURE [dbo].[GetContact]
@ContactID [int]
AS
BEGIN
SET NOCOUNT ON;
SELECT
ContactID,
PrefixTypeID,
FirstName,
MiddleName,
LastName,
Suffix,
LanguageTypeID,
Organization,
OrganizationLocation,
OrganizationDepartmentTypeID,
OrganizationEmployeeID,
JobTitleID,
TimeZone,
AccountID,
PortalID,
CorporateAccountID,
ContactRelationshipTypeID,
EthnicityID,
CitizenshipID,
EducationID,
ContactSalaryRangeID,
Age,
Birthday,
IsMarried,
LeadSourceTypeID
FROM Contact
WHERE ContactID = @ContactID
END
using (Data.Contact.ContactDataContext contactDC = new Data.Contact.ContactDataContext())
{
Data.Contact.GetContactResult contactResult = contactDC.GetContact(this.ID).SingleOrDefault();
}
을 Cannot implicitly convert type 'System.Data.Linq.ISingleResult <OTS.Data.Application.GetSessionResult>' to 'OTS.Data.Application.GetSessionResult'. An explicit conversion exists (are you missing a cast?)
CREATE PROCECURE [dbo].[GetSession]
AS
DECLARE @SessionID [nvarchar](38) = NEWID()
INSERT INTO SessionTable (SessionID) VALUES (@SessionID)
SELECT @SessionID As SessionID
SSMS에서 이것을 실행하면 올바른 데이터를 반환하지만 LINQ에서는 그렇지 않습니다. 이 질문과 비슷한 다른 질문은 답이 없거나 대답이 LINQ를 사용하지 않는 것입니다. LINQ를 사용하여이를 수행 할 수있는 방법이 있습니까?
UPDATE
하는 getSession의 코드는 정확히 getContact 같은과 동일합니다. 캐스팅 시도했지만 위의 오류가 나타납니다.
내가 겪고있어 문제는이 유사합니다 Question about linq2sql
우리가 ... 지금은 생산 생성뿐만 아니라하지만, 모든 새로운 절차를 제거없이 성공으로 DBML을 다시 만드는 시도했다 그러나 같은 문제.
UDF를 사용하면 필요한 출력을 얻을 수 있지만 응용 프로그램에서는 작동하지 않습니다. 내 절차에서 나는 데이터를 반환하기 전에 기록의 존재를 확인하고있다. INSERT
또는 UDF의 내부 EXEC
내가 그들을 사용하고 SP를 사용할 필요가 없습니다 수를 할 수 없다는으로
예를
CREATE PROCEDURE [dbo].[GetPage]
@PageName [nvarchar](255),
@PagePath [nvarchar](255)
AS
BEGIN
SET NOCOUNTON;
DECLARE @PageID [int]
IF NOT EXISTS(SELECT PageID FROM Page WHERE PagePath = @PagePath)
BEGIN
INSERT INTO Page(PageName, PagePath)
VALUES(@PageName, @PagePath)
SET @PageID = SCOPE_IDENTITY()
END
ELSE
BEGIN
SELECT @PageID = PageID
FROM Page
WHERE PagePath = @PagePath
END
--For the return values I have tried both ways below with the same results
--ReQuery DB for data
SELECT PageID, PageName, PagePath
FROM Page
WHERE PageID = @PageID
--Query the Variables
SELECT @PageID AS PageID, @PageName AS PageName, @PagePath AS PagePath
END
. 어떤 아이디어라도 감사합니다.