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
。任意のアイデアが評価されます。