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

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


咨詢
建站咨詢
