0
EFモデルを使用するASP.NET MVCアプリケーションがあります(データベースファーストアプローチ)。アプリケーションで使用する必要があるSQL Serverで定義されたプロシージャを格納しています。私はこれまでこれをやったことがない、これに関するガイダンスは高く評価されるだろう。ストアドプロシージャを追加して関数を作成しましたが、コントローラとビューにそれを追加する方法はわかりません。下記のコードでは、単にカードを追加したいと思っています。C#とASP.NET MVCでストアドプロシージャを使用
ストアドプロシージャ:
CREATE PROCEDURE [dbo].[CreateLoyaltyCards]
@NumberOfCards AS integer,
@CustomerID AS integer
AS
BEGIN
SET NOCOUNT ON;
DECLARE @NumberOfRows as integer = 0;
DECLARE @LoopNumber as integer = 0
WHILE @LoopNumber < @NumberOfCards
BEGIN
INSERT INTO Cards (CustomerID, CardDate)
VALUES (@CustomerID, GetDate())
SET @LoopNumber = @LoopNumber + 1
END
SELECT
Customers.CustomerCompanyName, Cards.CardNumber
FROM
Customers
INNER JOIN
Cards ON Customers.CustomerID = Cards.CustomerID
WHERE
Customers.CustomerID = @CustomerID
ORDER BY
CardID ASC
OFFSET @NumberOfRows ROWS
FETCH NEXT @NumberOfCards ROWS ONLY
END
CardsController //私は、ストアドプロシージャ
public ActionResult Create()
{
ViewBag.CustomerID = new SelectList(db.Customers, "CustomerID", "CustomerCompanyName");
return View();
}
// POST: Cards/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "CardID,CardNumber,CustomerID,StoreCustomerID,CardDate,CardStatus,CardNumber2,DiscountLevelID,LoyaltyLevelID,GiftCardEnabled,LoyaltyEnabled")] Card card)
{
if (ModelState.IsValid)
{
db.Cards.Add(card);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.CustomerID = new SelectList(db.Customers, "CustomerID", "CustomerCompanyName", card.CustomerID);
return View(card);
}
を使用する必要があるところ、これはこれは、コンテキストクラスでストアドプロシージャ
public virtual ObjectResult<Card> CreateCards(Nullable<int> numberOfCards, Nullable<int> customerID)
{
var numberOfCardsParameter = numberOfCards.HasValue ?
new ObjectParameter("NumberOfCards", numberOfCards) :
new ObjectParameter("NumberOfCards", typeof(int));
var customerIDParameter = customerID.HasValue ?
new ObjectParameter("CustomerID", customerID) :
new ObjectParameter("CustomerID", typeof(int));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Card>("CreateCards", numberOfCardsParameter, customerIDParameter);
}
可能性のある重複した[EntityFrameworkでストアドプロシージャを呼び出す方法?](https://stackoverflow.com/questions/14264750/how-to-call-stored-procedures-with-entityframework)
– krillgarあなたがすることはできませんdbを使用してストアドプロシージャメソッドを呼び出しますか? –
dbを使用してストアドプロシージャを呼び出しますが、パラメータには何が入りますか? –