ビュー モデル内にベンダー オブジェクトがあります。このベンダー レコードをデータベースに挿入するときに、このベンダーの ID を取得する必要があります。これは、直後に (別の sproc で) 別のテーブルの外部キーとして使用されるためです。test
取得する必要がある ID としてこれを実行しようとしています。proc_amcInsertApplicationServerRelationship
次のコードは、整数を想定しているため機能しませんtest
が、型はObject Parameter
です。
私の質問は次のとおりです。
私はこれに正しく取り組んでいますか?そうでない場合、より良いアプローチは何でしょうか? また、私の現在のアプローチに基づいて、これを機能させるために見落としている簡単なことはありますか? これが私のコードです(十分な詳細を提供していない場合は申し訳ありません):
[HttpPost]
public ActionResult Create(ApplicationViewModel applicationViewModel)
{
try
{
// TODO: Add insert logic here
ObjectParameter test = new ObjectParameter("ID", typeof (int));
var vendorID = db.proc_amcInsertNewVendor(applicationViewModel.Vendor.Company, applicationViewModel.Vendor.StreetAddress, applicationViewModel.Vendor.SecondaryStreetAddress,
applicationViewModel.Vendor.City, applicationViewModel.Vendor.State, applicationViewModel.Vendor.ZipCode, applicationViewModel.Vendor.PhoneNumber,
applicationViewModel.Vendor.Website, test);
foreach (var serverID in applicationViewModel.ServerIDs)
{
db.proc_amcInsertApplicationServerRelationship(test, serverID);
}
return RedirectToAction("Index");
}
catch (Exception exception)
{
return View();
}
}
編集:リクエストごとに、ここに私のストアドプロシージャがあります。
@Company varchar(100)
,@StreetAddress varchar(100)
,@SecondaryStreetAddress varchar(50)
,@City varchar(50)
,@State varchar(50)
,@ZipCode varchar(10)
,@PhoneNumber varchar(15)
,@Website varchar(200)
,@ID int = NULL OUT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
INSERT INTO [dbo].[amc_Vendors]
(
[Company]
,[StreetAddress]
,[SecondaryStreetAddress]
,[City]
,[State]
,[ZipCode]
,[PhoneNumber]
,[Website]
)
VALUES
(
@Company
,@StreetAddress
,@SecondaryStreetAddress
,@City
,@State
,@ZipCode
,@PhoneNumber
,@Website
)
SET @Id = SCOPE_IDENTITY()
END
GO