新聞中心
Entity Framework(EF)是微軟開發(fā)的一種ORM框架,通過EF,我們能夠以面向?qū)ο蟮姆绞讲僮鲾?shù)據(jù)庫,無需編寫SQL語句。EF已經(jīng)成為.NET中更受歡迎的ORM框架之一,它簡化了數(shù)據(jù)訪問和操作,提高了開發(fā)效率。在EF中,連接數(shù)據(jù)庫是非常重要的,因為我們需要根據(jù)數(shù)據(jù)存儲的需求和安全性要求設(shè)置連接方式。而在開發(fā)和測試環(huán)境中,我們可能需要刪除一些連接。本文將介紹。

1.在配置文件中刪除數(shù)據(jù)庫連接字符串
EF使用配置文件(.config)存儲數(shù)據(jù)庫連接信息。要刪除連接,我們只需要找到這個文件中與數(shù)據(jù)庫連接相關(guān)的段落,并將整篇文檔中與它有關(guān)的行全部刪除即可。在Visual Studio中,找到EF項目的App.config或Web.config文件,并打開它。
“`
providerName=”System.Data.SqlClient” />
“`
在上面的代碼段中,我們定義了一個名為“YourConnectionString”的連接字符串。要刪除它,只需將整行全部刪除即可。如果您的配置文件中有多個連接信息,您需要確保刪除的是正確的連接信息。
2.通過代碼刪除數(shù)據(jù)庫連接
如果您已經(jīng)在項目中寫了一些EF代碼并且已經(jīng)連接到了數(shù)據(jù)庫中的某個表,那么您需要在代碼中刪除連接。以下是一些常見的方法。
通過DbContext刪除連接:
“`csharp
using (var context = new YourDbContext())
{
context.Database.Connection.Close();
}
“`
通過SqlConnection刪除連接:
“`csharp
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
connection.Close();
}
“`
3.在Visual Studio Server Explorer中刪除數(shù)據(jù)庫連接
Visual Studio內(nèi)置了一個Server Explorer,可以讓我們方便地瀏覽并管理連接到的數(shù)據(jù)庫以及其他數(shù)據(jù)源。通過Server Explorer,可以輕松刪除連接。在Server Explorer中,右鍵單擊要刪除的連接,然后選擇“刪除”。
在項目開發(fā)和測試階段,我們可能需要刪除一些EF數(shù)據(jù)庫連接。在本文中,我們介紹了通過配置文件和代碼以及Visual Studio中的Server Explorer刪除連接的三種方法。使用這些方法,您可以更加靈活地管理EF項目中的數(shù)據(jù)庫連接,提高開發(fā)效率和安全性。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù)!
關(guān)于存儲過程中連接數(shù)據(jù)庫問題
存儲過程的概念
SQL Server提供了一種方法,它可以將一些固定的操作集中起來由SQL Server數(shù)據(jù)庫服務(wù)器來完成,以實現(xiàn)某個任務(wù),這種方法就是存儲過程。
存儲過程是SQL語句和可選控制流語句的預編譯,存儲在數(shù)據(jù)庫中,可由應(yīng)用程序通過一個調(diào)用執(zhí)行,而且允許用戶聲明變量、有條件執(zhí)行以及其他強大的編程功能。
在SQL Server中存儲過程分為兩類:即系統(tǒng)提供的存儲過程和用戶自定義的存儲過程。
可以出于任何使用SQL語句的目的來使用存儲過程,它具有以下優(yōu)點:
可以在單個存儲過程中執(zhí)行一系列SQL語句。
可以從自己的存儲過程內(nèi)引用其他存儲過程,這可以簡化一系列復雜語句。
存儲過程在創(chuàng)建時即在服務(wù)器上進行編譯,所以執(zhí)行起來比單個SQL語句快,而且減少網(wǎng)絡(luò)通信的負擔。
安全性更高。
創(chuàng)建存儲過程
在SQL Server中,可以使用三種方法創(chuàng)建存儲過程 :
①使用創(chuàng)建存儲過程向?qū)?chuàng)建存儲過程。
②利用SQL Server 企業(yè)管理器創(chuàng)建存儲過程。
③使用Transact-SQL語句中的CREATE PROCEDURE命令創(chuàng)建存儲過程。
下面介紹使用Transact-SQL語句中的CREATE PROCEDURE命令創(chuàng)建存儲過程
創(chuàng)建存儲過程前,應(yīng)該考慮下列幾個事項:
①不能將 CREATE PROCEDURE 語句與其它 SQL 語句組合到單個批處理中。
②存儲過程可以嵌套使用,嵌套的更大深度不能超過32層。
③創(chuàng)建存儲過程的權(quán)限默認屬于數(shù)據(jù)庫所有者,該所有者可將此權(quán)限授予其他用戶。
④存儲過程是數(shù)據(jù)庫對象,其名稱必須遵守標識符規(guī)則。
⑤只能在當前數(shù)據(jù)庫中創(chuàng)建存儲過程。
⑥ 一個存儲過程的更大尺寸為128M。
使用CREATE PROCEDURE創(chuàng)建存儲過程的語法形式如下:
QUOTE:
CREATE PROCprocedure_name
>
WITH
{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}>
AS sql_statement
用CREATE PROCEDURE創(chuàng)建存儲過程的語法參數(shù)的意義如下:
procedure_name:用于指定要創(chuàng)建的存儲過程的名稱。
number:該參數(shù)是可選的整數(shù),它用來對同名的存儲過程分組,以便用一條 DROP PROCEDURE 語句即可將同組的過程一起除去。
@parameter:過程中的參數(shù)。在 CREATE PROCEDURE 語句中可以聲明一個或多個參數(shù)。
data_type:用于指定參數(shù)的數(shù)據(jù)類型。
VARYING:用于指定作為輸出OUTPUT參數(shù)支持的結(jié)果集。
Default:用于指定參數(shù)的默認值。
OUTPUT:表明該參數(shù)是一個返回參數(shù)。
例如:下面創(chuàng)建一個 簡單的存儲過程productinfo,用于檢索產(chǎn)品信息。
USE Northwind
if exists(select name from sysobjects
where name=’productinfo’ and type = ‘p’)
drop procedure productinfo
GO
create procedure productinfo
as
select * from products
GO
通過下述sql語句執(zhí)行該存儲過程:execute productinfo
即可檢索到產(chǎn)品信息。
執(zhí)行存儲過程
直接執(zhí)行存儲過程可以使用EXECUTE命令來執(zhí)行,其語法形式如下:
>
{
{procedure_name|@procedure_name_var}{value|@variable|}
使用 EXECUTE 命令傳遞單個參數(shù),它執(zhí)行 showind 存儲過程,以 titles 為參數(shù)值。showind 存儲過程需要參數(shù) (@tabname),它是一個表的名稱。其程序清單如下:
EXEC showind titles
當然,在執(zhí)行過程中變量可以顯式命名:
EXEC showind @tabname = titles
如果這是 isql 腳本或批處理中之一個語句,則 EXEC 語句可以省略:
showind titles或者showind @tabname = titles
下面的例子使用了默認參數(shù)
USE Northwind
GO
CREATE PROCEDURE insert_Products_1
( @SupplierID_int,
@CategoryID_int,
@ProductName_1 nvarchar(40)=’無’)
AS INSERT INTO Products
(ProductName,SupplierID,CategoryID)
VALUES
(@ProductName_1,@SupplierID_2,@CategoryID_3)
GO
exec insert_Products_1 1,1
Select * from Products where SupplierID=1 and CategoryID=1
GO
下面的例子使用了返回參數(shù)
USE Northwind
GO
CREATE PROCEDURE query_products
( @SupplierID_1 int,
@ProductName_2 nvarchar(40) output)
AS
select @ProductName_2 = ProductName from products
where SupplierID = @SupplierID_1
執(zhí)行該存儲過程來查詢SupplierID為1的產(chǎn)品名:
declare @product nvarchar(40)
exec query_products 1,@product output
select ‘產(chǎn)品名’= @product
go
查看存儲過程
存儲過程被創(chuàng)建之后,它的名字就存儲在系統(tǒng)表sysobjects中,它的源代碼存放在系統(tǒng)表syscomments中??梢允褂檬褂闷髽I(yè)管理器或系統(tǒng)存儲過程來查看用戶創(chuàng)建的存儲過程。
使用企業(yè)管理器查看用戶創(chuàng)建的存儲過程
在企業(yè)管理器中,打開指定的服務(wù)器和數(shù)據(jù)庫項,選擇要創(chuàng)建存儲過程的數(shù)據(jù)庫,單擊存儲過程文件夾,此時在右邊的頁框中顯示該數(shù)據(jù)庫的所有存儲過程。用右鍵單擊要查看的存儲過程,從彈出的快捷菜單中選擇屬性選項,此時便可以看到存儲過程的源代碼。
使用系統(tǒng)存儲過程來查看用戶創(chuàng)建的存儲過程
可供使用的系統(tǒng)存儲過程及其語法形式如下:
sp_help:用于顯示存儲過程的參數(shù)及其數(shù)據(jù)類型
sp_help name>
參數(shù)name為要查看的存儲過程的名稱。
sp_helptext:用于顯示存儲過程的源代碼
sp_helptext name>
參數(shù)name為要查看的存儲過程的名稱。
sp_depends:用于顯示和存儲過程相關(guān)的數(shù)據(jù)庫對象
sp_depends ’object’
參數(shù)object為要查看依賴關(guān)系的存儲過程的名稱。
sp_stored_procedures:用于返回當前數(shù)據(jù)庫中的存儲過程列表
修改存儲過程
存儲過程可以根據(jù)用戶的要求或者基表定義的改變而改變。使用ALTER PROCEDURE語句可以更改先前通過執(zhí)行 CREATE PROCEDURE 語句創(chuàng)建的過程,但不會更改權(quán)限,也不影響相關(guān)的存儲過程或觸發(fā)器。其語法形式如下:
ALTERPROCprocedure_name
>
{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}>
AS
sql_statement
重命名和刪除存儲過程
1. 重命名存儲過程
修改存儲過程的名稱可以使用系統(tǒng)存儲過程sp_rename,其語法形式如下:
sp_rename 原存儲過程名稱,新存儲過程名稱
另外,通過企業(yè)管理器也可以修改存儲過程的名稱。
刪除存儲過程
刪除存儲過程可以使用DROP命令,DROP命令可以將一個或者多個存儲過程或者存儲過程組從當前數(shù)據(jù)庫中刪除,其語法形式如下:
drop procedure {procedure}
當然,利用企業(yè)管理器也可以很方便地刪除存儲過程。
存儲過程的重新編譯
在我們使用了一次存儲過程后,可能會因為某些原因,必須向表中新增加數(shù)據(jù)列或者為表新添加索引,從而改變了數(shù)據(jù)庫的邏輯結(jié)構(gòu)。這時,需要對存儲過程進行重新編譯,SQL Server提供三種重新編譯存儲過程的方法 :
1、在建立存儲過程時設(shè)定重新編譯
語法格式:CREATE PROCEDURE procedure_name WITH RECOMPILE AS sql_statement
2、在執(zhí)行存儲過程時設(shè)定重編譯
語法格式: EXECUTE procedure_name WITH RECOMPILE
3、通過使用系統(tǒng)存儲過程設(shè)定重編譯
語法格式為: EXEC sp_recompile OBJECT
系統(tǒng)存儲過程與擴展存儲過程
1.系統(tǒng)存儲過程
系統(tǒng)存儲過程存儲在master數(shù)據(jù)庫中,并以sp_為前綴,主要用來從系統(tǒng)表中獲取信息,為系統(tǒng)管理員管理SQL Server提供幫助,為用戶查看數(shù)據(jù)庫對象提供方便。比如用來查看數(shù)據(jù)庫對象信息的系統(tǒng)存儲過程sp_help、顯示存儲過程和其它對象的文本的存儲過程sp_helptext等。
2.擴展存儲過程:
擴展存儲過程以xp_為前綴,它是關(guān)系數(shù)據(jù)庫引擎的開放式數(shù)據(jù)服務(wù)層的一部分,其可以使用戶在動態(tài)鏈接庫(DLL)文件所包含的函數(shù)中實現(xiàn)邏輯,從而擴展了Transact-SQL的功能,并且可以象調(diào)用Transact-SQL過程那樣從Transact-SQL語句調(diào)用這些函數(shù)。
例: 利用擴展存儲過程xp_cmdshell為一個操作系統(tǒng)外殼執(zhí)行指定命令串,并作為文本返回任何輸出。
執(zhí)行代碼:
use master
exec xp_cmdshell ‘dir *.exe’
執(zhí)行結(jié)果返回系統(tǒng)目錄下的文件內(nèi)容文本信息。
最后給大家舉一個例子:
QUOTE:
/**
1、在Northwind數(shù)據(jù)庫中,創(chuàng)建一個帶查詢參數(shù)的存儲過程,
要求在輸入一個定購金額總額@total時,查詢超出該值的所
有產(chǎn)品的相關(guān)信息,包括產(chǎn)品名稱和供應(yīng)商名稱、單位數(shù)量、
單價、以及該產(chǎn)品的定購金額總額,并通過一個輸出參數(shù)返回
滿足查詢條件的產(chǎn)品數(shù)
**/
IF exists (select * from SysObjects where name=’more_than_total’ and type=’p’)
drop procedure more_than_total
go
CREATE PROCEDURE More_Than_Total
@total money = 0
AS
Declare @amount allint
BEGIN
select distinct
P.productName,
S.contactName,
P.UnitPrice
from Products P inner join O
on p.productID=o.productID inner join suppliers s
on p.supplierID=s.SupplierID
where O.productID in
(select productID
from
group by productId
having sum(quantity*unitprice)>@total
)
END
GO
預先在 這個數(shù)據(jù)庫上面, 先建立好另外幾個數(shù)據(jù)庫的 數(shù)據(jù)庫鏈接 ( DBLINK )
SQL> CREATE DATABASE LINK mydblink
CONNECT TO test IDENTIFIED BY test123
USING ‘(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.210)(PORT = 1521)))
(CONNECT_DATA = (SERVICE_NAME = orcl)
)
)’;
Database link created.
SQL> select count(1) from user_tables@mydblink;
COUNT(1)
如何動態(tài)更改EF的DBContext的連接字符串
為了實現(xiàn)程序在運行時同時管理多個數(shù)據(jù)庫,需要動態(tài)修改連接字符串。方法如下:
1. 修改Settings.Designer.cs的連接字符串,把只讀屬性改為可讀寫。注意,在新添加配置數(shù)據(jù)時,IDE會把你添加的內(nèi)容刪除。還需再次添加。
public string ConnectionString {get {
return ((string)(this));}//此為新添加的。set {
this = value;}}
ef中刪除數(shù)據(jù)庫連接的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于ef中刪除數(shù)據(jù)庫連接,EF中輕松刪除數(shù)據(jù)庫連接的方法,關(guān)于存儲過程中連接數(shù)據(jù)庫問題,如何動態(tài)更改EF的DBContext的連接字符串的信息別忘了在本站進行查找喔。
香港云服務(wù)器機房,創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)云服務(wù)器廠商,回大陸優(yōu)化帶寬,安全/穩(wěn)定/低延遲.創(chuàng)新互聯(lián)助力企業(yè)出海業(yè)務(wù),提供一站式解決方案。香港服務(wù)器-免備案低延遲-雙向CN2+BGP極速互訪!
網(wǎng)頁題目:EF中輕松刪除數(shù)據(jù)庫連接的方法(ef中刪除數(shù)據(jù)庫連接)
網(wǎng)站鏈接:http://www.5511xx.com/article/dhhgohg.html


咨詢
建站咨詢
