Použití stávajících uložených procedur komponentami TableAdapter typových sad dat (VB)
V předchozím kurzu jsme zjistili, jak pomocí Průvodce objektem TableAdapter generovat nové uložené procedury. V tomto kurzu se dozvíme, jak může stejný Průvodce objektem TableAdapter pracovat s existujícími uloženými procedurami. Naučíme se také ručně přidávat nové uložené procedury do naší databáze.
Úvod
V předchozím kurzu jsme viděli, jak lze objekty TableAdapter typed DataSet s nakonfigurovat tak, aby k přístupu k datům používaly uložené procedury místo ad hoc příkazů SQL. Konkrétně jsme prozkoumali, jak nastavit, aby průvodce TableAdapter tyto uložené procedury automaticky vytvořil. Při přenosu starší verze aplikace do ASP.NET 2.0 nebo při vytváření webu ASP.NET 2.0 kolem existujícího datového modelu je pravděpodobné, že databáze již obsahuje uložené procedury, které potřebujeme. Případně můžete raději vytvořit uložené procedury ručně nebo pomocí jiného nástroje, než je průvodce TableAdapter, který automaticky generuje uložené procedury.
V tomto kurzu se podíváme na to, jak nakonfigurovat objekt TableAdapter tak, aby používal existující uložené procedury. Vzhledem k tomu, že databáze Northwind obsahuje jenom malou sadu předdefinovaných uložených procedur, podíváme se také na kroky potřebné k ručnímu přidání nových uložených procedur do databáze prostřednictvím prostředí sady Visual Studio. Pojďme začít!
Poznámka
V kurzu Zabalení úprav databáze v rámci transakce jsme do objektu TableAdapter přidali metody pro podporu transakcí (BeginTransaction
, CommitTransaction
atd.). Alternativně je možné transakce spravovat zcela v rámci uložené procedury, což nevyžaduje žádné úpravy kódu vrstvy přístupu k datům. V tomto kurzu prozkoumáme příkazy T-SQL používané ke spuštění příkazů s uložených procedur v rámci transakce.
Krok 1: Přidání uložených procedur do databáze Northwind
Visual Studio usnadňuje přidávání nových uložených procedur do databáze. Pojďme do databáze Northwind přidat novou uloženou proceduru, která vrátí všechny sloupce z Products
tabulky pro ty, které mají určitou CategoryID
hodnotu. V okně Průzkumník serveru rozbalte databázi Northwind, aby se zobrazily její složky – Databázové diagramy, tabulky, zobrazení atd. Jak jsme viděli v předchozím kurzu, složka Uložené procedury obsahuje existující uložené procedury databáze. Pokud chcete přidat novou uloženou proceduru, jednoduše klikněte pravým tlačítkem na složku Uložené procedury a v místní nabídce zvolte možnost Přidat novou uloženou proceduru.
Obrázek 1: Right-Click složky Uložené procedury a přidat novou uloženou proceduru (kliknutím zobrazíte obrázek v plné velikosti)
Obrázek 1 ukazuje, že výběrem možnosti Přidat novou uloženou proceduru se v sadě Visual Studio otevře okno skriptu s osnovou skriptu SQL potřebného k vytvoření uložené procedury. Naším úkolem je tento skript zmasilit a spustit. V tomto okamžiku se uložená procedura přidá do databáze.
Zadejte následující skript:
CREATE PROCEDURE dbo.Products_SelectByCategoryID
(
@CategoryID int
)
AS
SELECT ProductID, ProductName, SupplierID, CategoryID,
QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder,
ReorderLevel, Discontinued
FROM Products
WHERE CategoryID = @CategoryID
Tento skript po spuštění přidá do databáze Northwind novou uloženou proceduru s názvem Products_SelectByCategoryID
. Tato uložená procedura přijímá jeden vstupní parametr (@CategoryID
typu int
) a vrací všechna pole pro tyto produkty s odpovídající CategoryID
hodnotou.
Pokud chcete spustit tento CREATE PROCEDURE
skript a přidat uloženou proceduru do databáze, klikněte na panelu nástrojů na ikonu Uložit nebo stiskněte Ctrl+S. Po provedení této operace se složka Uložené procedury aktualizuje a zobrazí nově vytvořenou proceduru. Skript v okně také změní jemnost z CREATE PROCEDURE dbo.Products_SelectProductByCategoryID
na ALTER PROCEDURE
dbo.Products_SelectProductByCategoryID
. CREATE PROCEDURE
přidá do databáze novou uloženou proceduru a aktualizuje ALTER PROCEDURE
existující proceduru. Vzhledem k tomu, že se začátek skriptu změnil na ALTER PROCEDURE
, změna vstupních parametrů uložených procedur nebo příkazů SQL a kliknutím na ikonu Uložit aktualizuje uloženou proceduru s těmito změnami.
Obrázek 2 znázorňuje sadu Visual Studio po Products_SelectByCategoryID
uložení uložené procedury.
Obrázek 2: Uložená procedura Products_SelectByCategoryID
byla přidána do databáze (kliknutím zobrazíte obrázek v plné velikosti)
Krok 2: Konfigurace objektu TableAdapter pro použití existující uložené procedury
Teď, když Products_SelectByCategoryID
byla uložená procedura přidána do databáze, můžeme nakonfigurovat vrstvu přístupu k datům tak, aby tuto uloženou proceduru používala při vyvolání jedné z jejích metod. Konkrétně do objektu Typed DataSet přidáme metodu GetProductsByCategoryID(<_i22_>categoryID)<!--_i22_-->
ProductsTableAdapter
NorthwindWithSprocs
, která volá právě vytvořenou uloženou proceduru.Products_SelectByCategoryID
Začněte otevřením NorthwindWithSprocs
datové sady. Klikněte pravým tlačítkem myši na ProductsTableAdapter
a zvolte Přidat dotaz, aby se spustil průvodce Konfigurace dotazu TableAdapter. V předchozím kurzu jsme se rozhodli, že pro nás objekt TableAdapter vytvoří novou uloženou proceduru. Pro účely tohoto kurzu však chceme připojit novou metodu TableAdapter k existující Products_SelectByCategoryID
uložené proceduře. Proto v prvním kroku průvodce zvolte možnost Použít existující uloženou proceduru a potom klikněte na Další.
Obrázek 3: Zvolte možnost Použít existující uloženou proceduru (kliknutím zobrazíte obrázek v plné velikosti)
Následující obrazovka obsahuje rozevírací seznam naplněný uloženými procedurami databáze. Když vyberete uloženou proceduru, zobrazí se její vstupní parametry vlevo a na pravé straně vrácené datové pole (pokud existují). V seznamu zvolte uloženou Products_SelectByCategoryID
proceduru a klikněte na Další.
Obrázek 4: Vyberte uloženou proceduru Products_SelectByCategoryID
(kliknutím zobrazíte obrázek v plné velikosti)
Další obrazovka se ptá, jaký druh dat vrací uložená procedura a naše odpověď zde určuje typ vrácený metodou TableAdapter s. Pokud například označíme, že jsou vrácena tabulková data, vrátí metoda instanci naplněnou ProductsDataTable
záznamy vrácenými uloženou procedurou. Naproti tomu pokud označíme, že tato uložená procedura vrátí jednu hodnotu, tableAdapter vrátí Object
hodnotu, která je přiřazena v prvním sloupci prvního záznamu vráceného uloženou procedurou.
Vzhledem k tomu, že uložená Products_SelectByCategoryID
procedura vrací všechny produkty, které patří do určité kategorie, zvolte první odpověď – Tabulková data – a klikněte na Další.
Obrázek 5: Označuje, že uložená procedura vrací tabulková data (kliknutím zobrazíte obrázek v plné velikosti)
Zbývá jen určit, jaké vzory metod použít, a názvy těchto metod. Ponechte zaškrtnuté možnosti Vyplnit tabulku DataTable i Vrátit dataTable, ale přejmenujte metody na FillByCategoryID
a GetProductsByCategoryID
. Potom klikněte na Další a prohlédněte si souhrn úloh, které průvodce provede. Pokud všechno vypadá správně, klikněte na Dokončit.
Obrázek 6: Pojmenujte metody FillByCategoryID
a GetProductsByCategoryID
(kliknutím zobrazíte obrázek v plné velikosti)
Poznámka
Metody TableAdapter, které jsme právě vytvořili, FillByCategoryID
a GetProductsByCategoryID
očekávají vstupní parametr typu Integer
. Tato hodnota vstupního parametru se předává uložené proceduře prostřednictvím jejího @CategoryID
parametru. Pokud upravíte Products_SelectByCategory
parametry uložené procedury, budete muset také aktualizovat parametry pro tyto metody TableAdapter. Jak bylo popsáno v předchozím kurzu, můžete to provést jedním ze dvou způsobů: ručním přidáním nebo odebráním parametrů z kolekce parametrů nebo opětovným spuštěním průvodce TableAdapter.
Krok 3: PřidáníGetProductsByCategoryID(categoryID)
metody do BLL
GetProductsByCategoryID
Po dokončení metody DAL je dalším krokem poskytnutí přístupu k této metodě ve vrstvě obchodní logiky. ProductsBLLWithSprocs
Otevřete soubor třídy a přidejte následující metodu:
<System.ComponentModel.DataObjectMethodAttribute _
(System.ComponentModel.DataObjectMethodType.Select, False)> _
Public Function GetProductsByCategoryID(ByVal categoryID As Integer) _
As NorthwindWithSprocs.ProductsDataTable
Return Adapter.GetProductsByCategoryID(categoryID)
End Function
Tato metoda BLL jednoduše vrátí vrácenou ProductsDataTable
metodu ProductsTableAdapter
s GetProductsByCategoryID
. Atribut DataObjectMethodAttribute
poskytuje metadata používaná průvodcem Konfigurace zdroje dat ObjectDataSource. Konkrétně se tato metoda zobrazí v rozevíracím seznamu karet SELECT.
Krok 4: Zobrazení produktů podle kategorie
Chcete-li otestovat nově přidanou Products_SelectByCategoryID
uloženou proceduru a odpovídající metody DAL a BLL, nechme vytvořit ASP.NET stránku, která obsahuje DropDownList a GridView. Rozevírací seznam zobrazí seznam všech kategorií v databázi, zatímco GridView zobrazí produkty, které patří do vybrané kategorie.
Poznámka
V předchozích kurzech jsme vytvořili hlavní/podrobná rozhraní pomocí DropDownLists. Podrobnější pohled na implementaci takové hlavní nebo podrobné sestavy najdete v kurzu Filtrování hlavních a podrobných dat pomocí rozevíracího seznamu .
ExistingSprocs.aspx
Otevřete stránku ve AdvancedDAL
složce a přetáhněte rozevírací seznam ze sady nástrojů do Designer. Vlastnost DropDownList s ID
nastavte na Categories
a její AutoPostBack
vlastnost na True
. Dále z inteligentní značky vytvořte vazbu DropDownList k novému objektu ObjectDataSource s názvem CategoriesDataSource
. Nakonfigurujte ObjectDataSource tak, aby načítal data z CategoriesBLL
metody třídy s GetCategories
. Nastavte rozevírací seznamy na kartách UPDATE, INSERT a DELETE na (Žádné) .
Obrázek 7: Načtení dat z CategoriesBLL
metody Třídy s GetCategories
(kliknutím zobrazíte obrázek v plné velikosti)
Obrázek 8: Nastavení Drop-Down Seznamy na kartách UPDATE, INSERT a DELETE na (Žádné) (Kliknutím zobrazíte obrázek v plné velikosti)
Po dokončení průvodce ObjectDataSource nakonfigurujte DropDownList tak, aby se zobrazilo CategoryName
datové pole a aby se pole používalo CategoryID
jako Value
pole pro každý ListItem
objekt .
V tomto okamžiku by deklarativní značky DropDownList a ObjectDataSource měly vypadat přibližně takto:
<asp:DropDownList ID="Categories" runat="server" AutoPostBack="True"
DataSourceID="CategoriesDataSource" DataTextField="CategoryName"
DataValueField="CategoryID">
</asp:DropDownList>
<asp:ObjectDataSource ID="CategoriesDataSource" runat="server"
OldValuesParameterFormatString="original_{0}"
SelectMethod="GetCategories" TypeName="CategoriesBLL">
</asp:ObjectDataSource>
Potom přetáhněte Objekt GridView na Designer a umístěte ho pod rozevírací seznam. Nastavte Objekt GridView na ID
ProductsByCategory
a z jeho inteligentní značky vytvořte vazbu k novému objektu ObjectDataSource s názvem ProductsByCategoryDataSource
. ProductsByCategoryDataSource
Nakonfigurujte ObjectDataSource tak, aby používala ProductsBLLWithSprocs
třídu , která načítá data pomocí GetProductsByCategoryID(categoryID)
metody . Vzhledem k tomu, že tento Objekt GridView bude použit pouze k zobrazení dat, nastavte rozevírací seznamy na kartách UPDATE, INSERT a DELETE na (Žádný) a klikněte na Další.
Obrázek 9: Konfigurace objektu ObjectDataSource pro použití ProductsBLLWithSprocs
třídy (kliknutím zobrazíte obrázek v plné velikosti)
Obrázek 10: Načtení dat z GetProductsByCategoryID(categoryID)
metody (kliknutím zobrazíte obrázek v plné velikosti)
Metoda zvolená na kartě SELECT očekává parametr, takže poslední krok průvodce nás vyzve k zadání zdroje parametru s. Nastavte rozevírací seznam Zdroj parametrů na Ovládací prvek a zvolte Categories
ovládací prvek z rozevíracího seznamu ControlID. Dokončete průvodce kliknutím na Dokončit.
Obrázek 11: Použití rozevíracího Categories
seznamu jako zdroje parametru categoryID
(kliknutím zobrazíte obrázek v plné velikosti)
Po dokončení průvodce ObjectDataSource přidá Visual Studio boundFields a CheckBoxField pro každé z datových polí produktu. Tato pole si můžete přizpůsobit podle potřeby.
Přejděte na stránku prostřednictvím prohlížeče. Při návštěvě stránky je vybrána kategorie Nápoje a odpovídající produkty uvedené v mřížce. Změna rozevíracího seznamu na alternativní kategorii, jak je znázorněno na obrázku 12, způsobí zpětné odeslání a znovu načte mřížku s produkty nově vybrané kategorie.
Obrázek 12: Zobrazí se produkty v kategorii Plodin (kliknutím zobrazíte obrázek v plné velikosti)
Krok 5: Zabalení příkazů uložené procedury v rámci rozsahu transakce
V kurzu Zabalení úprav databáze v rámci transakce jsme probrali techniky pro provádění řady příkazů úprav databáze v rámci rozsahu transakce. Vzpomeňte si, že změny provedené v rámci transakce buď všechny úspěšné, nebo všechny selžou, zaručují nedělitelnost. Mezi techniky použití transakcí patří:
- Pomocí tříd v
System.Transactions
oboru názvů, - Použití vrstvy přístupu k datům ADO.NET tříd, jako jsou
SqlTransaction
, a - Přidání příkazů transakce T-SQL přímo v rámci uložené procedury
Kurz Zabalení úprav databáze v rámci transakce používal třídy ADO.NET v DAL. Zbývající část tohoto kurzu zkoumá, jak spravovat transakci pomocí příkazů T-SQL z uložené procedury.
Tři klíčové příkazy SQL pro ruční spuštění, potvrzení a vrácení transakce jsou BEGIN TRANSACTION
, COMMIT TRANSACTION
a ROLLBACK TRANSACTION
. Stejně jako u ADO.NET přístupu musíme při použití transakcí z uložené procedury použít následující vzor:
- Označuje začátek transakce.
- Spusťte příkazy SQL, které tvoří transakci.
- Pokud v některém z příkazů z kroku 2 dojde k chybě, vraťte transakci zpět.
- Pokud se všechny příkazy z kroku 2 dokončí bez chyby, potvrďte transakci.
Tento vzor lze implementovat v syntaxi T-SQL pomocí následující šablony:
BEGIN TRY
BEGIN TRANSACTION -- Start the transaction
... Perform the SQL statements that makeup the transaction ...
-- If we reach here, success!
COMMIT TRANSACTION
END TRY
BEGIN CATCH
-- Whoops, there was an error
ROLLBACK TRANSACTION
-- Raise an error with the
-- details of the exception
DECLARE @ErrMsg nvarchar(4000),
@ErrSeverity int
SELECT @ErrMsg = ERROR_MESSAGE(),
@ErrSeverity = ERROR_SEVERITY()
RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH
Šablona začíná definováním TRY...CATCH
bloku, konstruktoru nového SQL Server 2005. Stejně jako v Try...Catch
případě bloků v jazyce Visual Basic provádí blok SQL TRY...CATCH
příkazy v TRY
bloku . Pokud některý příkaz vyvolá chybu, ovládací prvek se okamžitě přenese do CATCH
bloku.
Pokud při provádění příkazů SQL, které tvoří transakci, nedojde k chybám, COMMIT TRANSACTION
příkaz potvrdí změny a transakci dokončí. Pokud však jeden z příkazů vede k chybě, ROLLBACK TRANSACTION
vrátí objekt v CATCH
bloku databázi do stavu před zahájením transakce. Uložená procedura také vyvolá chybu pomocí příkazu RAISERROR, který způsobí SqlException
vyvolání objektu v aplikaci.
Poznámka
Vzhledem k tomu, že TRY...CATCH
blok je v SQL Server 2005 nový, výše uvedená šablona nebude fungovat, pokud používáte starší verze Microsoft SQL Server.
Podívejme se na konkrétní příklad. Mezi tabulkami a Products
existuje omezení cizího Categories
klíče, což znamená, že každé CategoryID
pole v Products
tabulce se musí mapovat na CategoryID
hodnotu v Categories
tabulce. Jakákoli akce, která by toto omezení porušila, například pokus o odstranění kategorie s přidruženými produkty, způsobí porušení omezení cizího klíče. Pokud to chcete ověřit, znovu se podívejte na příklad Aktualizace a odstranění existujících binárních dat v části Práce s binárními daty (~/BinaryData/UpdatingAndDeleting.aspx
). Tato stránka obsahuje seznam všech kategorií v systému spolu s tlačítky Upravit a Odstranit (viz Obrázek 13), ale pokud se pokusíte odstranit kategorii, která má přidružené produkty ( například Nápoje), odstranění se nezdaří kvůli porušení omezení cizího klíče (viz Obrázek 14).
Obrázek 13: Každá kategorie se zobrazí v zobrazení GridView s tlačítky Upravit a Odstranit (kliknutím zobrazíte obrázek v plné velikosti)
Obrázek 14: Nelze odstranit kategorii, která obsahuje existující produkty (kliknutím zobrazíte obrázek v plné velikosti)
Představte si ale, že chceme povolit odstranění kategorií bez ohledu na to, jestli mají přidružené produkty. Pokud by se odstranila kategorie s produkty, představte si, že chceme odstranit i její stávající produkty (i když další možností je jednoduše nastavit hodnoty jejích produktů CategoryID
na NULL
). Tuto funkci je možné implementovat prostřednictvím kaskádových pravidel omezení cizího klíče. Případně můžeme vytvořit uloženou proceduru, která přijme vstupní parametr a při vyvolání explicitně odstraní všechny přidružené produkty a pak zadanou @CategoryID
kategorii.
První pokus o takovou uloženou proceduru může vypadat takto:
CREATE PROCEDURE dbo.Categories_Delete
(
@CategoryID int
)
AS
-- First, delete the associated products...
DELETE FROM Products
WHERE CategoryID = @CategoryID
-- Now delete the category
DELETE FROM Categories
WHERE CategoryID = @CategoryID
I když to určitě odstraní přidružené produkty a kategorii, nedělá to pod střechou transakce. Představte si, že existuje nějaké jiné omezení Categories
cizího klíče, které by zakazovalo odstranění konkrétní @CategoryID
hodnoty. Problém je v tom, že v takovém případě budou odstraněny všechny produkty předtím, než se pokusíme kategorii odstranit. Čistým výsledkem je, že pro takovou kategorii by tato uložená procedura odebrala všechny své produkty, zatímco kategorie zůstala, protože stále obsahuje související záznamy v některé jiné tabulce.
Pokud by však uložená procedura byla zabalena v rámci transakce, odstranění do Products
tabulky by se vrátilo zpět v případě neúspěšného odstranění na Categories
. Následující skript uložené procedury používá transakci k zajištění nedělitelnosti mezi dvěma DELETE
příkazy:
CREATE PROCEDURE dbo.Categories_Delete
(
@CategoryID int
)
AS
BEGIN TRY
BEGIN TRANSACTION -- Start the transaction
-- First, delete the associated products...
DELETE FROM Products
WHERE CategoryID = @CategoryID
-- Now delete the category
DELETE FROM Categories
WHERE CategoryID = @CategoryID
-- If we reach here, success!
COMMIT TRANSACTION
END TRY
BEGIN CATCH
-- Whoops, there was an error
ROLLBACK TRANSACTION
-- Raise an error with the
-- details of the exception
DECLARE @ErrMsg nvarchar(4000),
@ErrSeverity int
SELECT @ErrMsg = ERROR_MESSAGE(),
@ErrSeverity = ERROR_SEVERITY()
RAISERROR(@ErrMsg, @ErrSeverity, 1)
END CATCH
Chvíli se dejte přidat uloženou Categories_Delete
proceduru do databáze Northwind. Pokyny k přidání uložených procedur do databáze najdete v kroku 1.
Krok 6: AktualizaceCategoriesTableAdapter
Zatímco jsme přidali uloženou proceduru Categories_Delete
do databáze, dal je aktuálně nakonfigurovaný tak, aby k provedení odstranění používal ad hoc příkazy SQL. Musíme aktualizovat CategoriesTableAdapter
a dát mu pokyn, aby místo toho použil uloženou proceduru Categories_Delete
.
Poznámka
Dříve v tomto kurzu jsme pracovali s datovou NorthwindWithSprocs
sadou. Tato datová sada ale obsahuje pouze jednu entitu ProductsDataTable
, a proto musíme pracovat s kategoriemi. Proto ve zbývající části tohoto kurzu, když mluvím o vrstvě přístupu k datům, mám na Northwind
mysli DataSet, kterou jsme poprvé vytvořili v kurzu Vytvoření vrstvy přístupu k datům .
Otevřete sadu Northwind DataSet, vyberte CategoriesTableAdapter
a přejděte na okno Vlastnosti. V okno Vlastnosti jsou uvedeny InsertCommand
, UpdateCommand
, DeleteCommand
a SelectCommand
používané objektem TableAdapter, stejně jako jeho název a informace o připojení. Rozbalením DeleteCommand
vlastnosti zobrazíte její podrobnosti. Jak je znázorněno na obrázku DeleteCommand
15, vlastnost s CommandType
je nastavená na Text, což dává pokyn k odeslání textu ve CommandText
vlastnosti jako ad hoc dotazu SQL.
Obrázek 15: Výběrem CategoriesTableAdapter
v Designer zobrazíte jeho vlastnosti v okně Vlastnosti.
Pokud chcete tato nastavení změnit, vyberte v okno Vlastnosti text (DeleteCommand) a v rozevíracím seznamu zvolte (Nový). Tím se vymažou nastavení vlastností CommandText
, CommandType
a Parameters
. Dále nastavte vlastnost na CommandType
StoredProcedure
a zadejte název uložené procedury pro CommandText
(dbo.Categories_Delete
). Pokud potřebujete zadat vlastnosti v tomto pořadí, nejprve CommandType
sada Visual Studio a potom CommandText
automaticky naplní kolekci Parameters. Pokud tyto vlastnosti nezadáte v tomto pořadí, budete muset parametry přidat ručně prostřednictvím kolekce parametrů Editor. V každém případě je vhodné kliknout na tři tečky ve vlastnosti Parametry a zobrazit kolekci parametrů Editor ověřit, zda byly provedeny správné změny nastavení parametrů (viz obrázek 16). Pokud se v dialogovém okně nezobrazí žádné parametry, přidejte @CategoryID
parametr ručně (nemusíte ho @RETURN_VALUE
přidávat).
Obrázek 16: Ujistěte se, že jsou nastavení parametrů správná
Po aktualizaci DAL se odstraněním kategorie automaticky odstraní všechny přidružené produkty, a to pod hlavičkou transakce. Pokud to chcete ověřit, vraťte se na stránku Aktualizace a odstranění existujících binárních dat a klikněte na tlačítko Odstranit u jedné z kategorií. Jedním kliknutím myši se kategorie a všechny přidružené produkty odstraní.
Poznámka
Před testováním Categories_Delete
uložené procedury, která odstraní řadu produktů spolu s vybranou kategorií, může být rozumné vytvořit záložní kopii databáze. Pokud používáte databázi v App_Data
nástroji NORTHWND.MDF
, jednoduše zavřete sadu Visual Studio a zkopírujte soubory MDF a LDF do App_Data
jiné složky. Po otestování funkčnosti můžete databázi obnovit zavřením sady Visual Studio a nahrazením aktuálních souborů MDF a LDF záložními App_Data
kopiemi.
Souhrn
I když vám průvodce TableAdapter automaticky vygeneruje uložené procedury, může se stát, že takové uložené procedury už máme vytvořené nebo je budeme chtít vytvořit ručně nebo pomocí jiných nástrojů. Pro takové scénáře lze objekt TableAdapter také nakonfigurovat tak, aby odkazoval na existující uloženou proceduru. V tomto kurzu jsme se podívali na to, jak ručně přidat uložené procedury do databáze prostřednictvím prostředí sady Visual Studio a jak připojit metody TableAdapter k těmto uloženým procedurám. Prozkoumali jsme také příkazy T-SQL a vzor skriptů, které se používají ke spouštění, pověřování a vrácení transakcí z uložené procedury.
Všechno nejlepší na programování!
O autorovi
Scott Mitchell, autor sedmi knih o ASP/ASP.NET a zakladatel 4GuysFromRolla.com, pracuje s webovými technologiemi Microsoftu od roku 1998. Scott pracuje jako nezávislý konzultant, školitel a spisovatel. Jeho nejnovější kniha je Sams Teach Yourself ASP.NET 2.0 in 24 Hours. Můžete ho najít na mitchell@4GuysFromRolla.comadrese . nebo prostřednictvím jeho blogu, který najdete na http://ScottOnWriting.NETadrese .
Zvláštní poděkování
Tato série kurzů byla zkontrolována mnoha užitečnými recenzenty. Hlavními recenzenty tohoto kurzu byli Hilton Geisenow, S ren Jacob Lauritsen a Teresa Murphy. Chcete si projít moje nadcházející články na WEBU MSDN? Pokud ano, dejte mi čáru na mitchell@4GuysFromRolla.comadresu .
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro