Webアプリケーションから実行するストアドプロシージャの取得に取り組んでいます。私は、値がshouldのように入力されていることを確認できますが、私は2つのエラーのいずれかを得ます。Entity Frameworkコード最初に格納されたProc構文が正しくない/スカラ変数が宣言されている必要があります
これは関連するコードですが、私も周りを見回し、いくつかの異なるソリューションを試してみましたが、なぜ機能していないのかを突き止めました。
// incorrect syntax near newCompany - have tried with both the parameter1 and parameter1.Value, parameter2 and parameter2.Value
public virtual int usp_TransferRecords(int oldCompany, int newCompany)
{
SqlParameter parameter1 = new SqlParameter("OldCompany", oldCompany);
SqlParameter parameter2 = new SqlParameter("NewCompany", newCompany);
return ((IObjectContextAdapter)this).ObjectContext.ExecuteStoreCommand("usp_TransferRecords @OldCompany @NewCompany", parameter1, parameter2);
}
// Message = "Must declare the scalar variable \"@OldCompany\"." - have tried with both the parameter1 and parameter1.Value, parameter2 and parameter2.Value
public virtual int usp_TransferRecords(int oldCompany, int newCompany)
{
SqlParameter parameter1 = new SqlParameter("OldCompany", oldCompany);
SqlParameter parameter2 = new SqlParameter("NewCompany", newCompany);
return ((IObjectContextAdapter)this).ObjectContext.ExecuteStoreCommand("usp_TransferRecords @OldCompany, @NewCompany", parameter1, parameter2);
}
これはストアドプロシージャです::私はそれが次
// Original
public virtual int usp_TransferRecords(int oldCompany, int newCompany)
{
SqlParameter parameter1 = new SqlParameter("OldCompany", oldCompany);
SqlParameter parameter2 = new SqlParameter("NewCompany", newCompany);
return ((IObjectContextAdapter)this).ObjectContext.ExecuteStoreCommand("usp_TransferRecords @OldCompany, @NewCompany", parameter1, parameter2);
}
を変更することにより、正常に動作するようになった
@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "Form", enctype = "multipart/form-data" }))
{
<h2 style="text-align:center"> This copy Records from old Company to new Company</h2>
<div class="centered" style="width:400px">
@Html.TextBox("oldCompany", id, new { onkeyup = "this.value=this.value.replace(/[^0-9]/g,'')", watermark = "Old Company #", @class = "watermark", style = "display:inline-block;" })
@Html.TextBox("newCompany", String.Empty, new { onkeyup = "this.value=this.value.replace(/[^0-9]/g,'')", watermark = "New Company #", @class = "watermark", style = "display:inline-block;" })
<input type="submit" name="submitButton" value="Copy" class="right orangebutton" style="position:absolute;left:62%;" />
</div>
}
:
CREATE PROCEDURE [dbo].[usp_TransferRecords]
@OldCompany int,
@NewCompany int
AS
BEGIN
-- delete existing records from new company
DELETE FROM [dbo].[Table] WHERE CompanyID = @NewCompany
-- copy records from old company to new new company
INSERT INTO [dbo].[Table] ([ID], [CompanyID], [City], [State], [Priority])
SELECT NEWID(), @NewCompany, City, State, Priority
FROM [dbo].[TABLE]
WHERE CompanyID = @OldCompany
-- reset record pages for both new and old companies
SET NOCOUNT ON;
-- deletes Dynamic Content Cache for both new and old companies
DELETE FROM [dbo].[Table]
WHERE CompanyID IN (@OldCompany, @NewCompany)
AND (ContentKey LIKE '%-generic-service-page' OR
ContentKey LIKE '%-item-custom-service-page' OR
ContentKey LIKE '%-about-page')
-- deletes contents to so they will be regenerated
DELETE FROM [dbo].[TABLE]
WHERE CompanyID IN (@OldCompany, @NewCompany)
AND IsCityPage = 1
END
Web UIのマークアップ
// Working
public virtual int usp_TransferRecords(int oldCompany, int newCompany)
{
var @params = new SqlParameter[]
{
new SqlParameter("OldCompany", oldCompany),
new SqlParameter("NewCompany", newCompany)
};
return ((IObjectContextAdapter)this).ObjectContext.ExecuteStoreCommand("usp_TransferRecords @OldCompany, @NewCompany", @params);
}
この方法が他の元のものよりも優れている理由については、洞察があります。すべての人に感謝します。
です'usp_CopyRecord'を呼び出そうとしていますか? –
申し訳ありませんが、タイプミスでコピーレコードの代わりにusp_TransferRecordsを呼び出す必要がありました – ondrovic
'EXEC usp_TransferRecords @OldCompany = @OldCompany、@NewCompany = @ NewCompany'は何の収穫ですか? –