台灣最大程式設計社群網站
線上人數
1371
 
會員總數:245253
討論主題:189112
歡迎您免費加入會員
討論區列表 >> ASP.NET >> 有關Entity Framework在程式中給連線字串
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
有關Entity Framework在程式中給連線字串
價值 : 300 QP  點閱數:4941 回應數:10

樓主

阿源哥哥 版主
中級顧問
31892 227
19015 5947
發送站內信

捐贈 VP 給 阿源哥哥
各位有在使用 Entity Framework 的先進們,想請教一個有關於在程式中給連線字串的問題。

在Visual Studio 2012正式版出來之前,個人會使用類似下述方式,在程式執行中
動態給定資料庫連線字串。



但是今天使用Visual Studio 2012 正式版,新開一個專案卻變成不能在程式中動態給定資料庫連線字串,
只能以下述的方式,由Web.config(或App.config)中取得連線字串。



請問各位先進是否有遇到這樣的問題,還是說Entity Framework 5.0有新的做法。

因為動態取得資料庫連線字串對於目前要開發的專案很重要,所以懇請有經驗的先進指教一下。


註:使用舊版本的Visual Studio (包含2012 Beta)所建立的專案昇級成2012正式版還是可繼續使用。


本篇文章發表於2012-09-25 17:42
== 簽名檔 ==
我的 ASP.NET MVC 學習心路歷程

ASP.NET MVC 自學日誌:http://mvc.keigen.net

我的畢生經驗分享-老實書局:http://www.keigen.net/Books
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

demo
捐贈 VP 給 demo 檢舉此回應
是的EF 5.0改不少
本篇文章回覆於2012-09-25 17:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

KKBruce
捐贈 VP 給 KKBruce 檢舉此回應


請參考:

Visual studio 2012建好Northwind.edmx後,會產生一堆子檔案,
其中有一個Northwind.Context.vb(不是*.tt,不會顯示在方案總管內,請到Models目錄下找),
此類別是NorthwindEntities的部分類別,裡面的建構式可以指定連線名稱。

你看看能不能這樣畫葫蘆改著用。
本篇文章回覆於2012-09-26 09:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

AllenStyle
檢舉此回應
您好!

您的問題似乎也有人問過類似的,不清楚是否一樣,這邊提供那篇討論串供你參考!

http://stackoverflow.com/questions/12364617/ef-5-0-dynamic-connection-string

希望對您有幫助!

AllenStyle
本篇文章回覆於2012-09-27 23:02
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

水煎包
檢舉此回應
不好意思捏,我在這說說我的想法
說錯別打我~~
在之前都是用ObjectContext
VS2012用默認的DbContext
如果你要用之前的方法的話,試試轉一下
((IObjectContextAdapter)DbContext).ObjectContext
本篇文章回覆於2012-09-28 10:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

Pan01
檢舉此回應
我是沒有用 Entity Framework 過 ,
不過 由 MSDN 中的文章中 與 #2 的 貼圖 來看 ,
這 純粹是 .NET 4.5 的 代碼產生器 所產生的 代碼 不同 所造成的 .

之前的 代碼產生器 會產出 兩個 建構子 ,

而 .NET 4.5 (VS2012正式版)的 卻只 產出 一個 建構子 .

所以 , #3 的 貼文 利用 partial class 的特性 自己寫一個 建構子 應該是 正確的解法.

================================================================

至於 "舊版本的Visual Studio (包含2012 Beta)所建立的專案昇級成2012正式版還是可繼續使用。"

這是因為 你沒有去 修改 EF 的 Model 架構, 所以 沒有觸發 代碼重建 .

相信你 只要 針對這些 專案 修改 Model 架構 , 觸發 代碼重建後 ,

這個 "AdventureWorksEntities(Manage.ConnectionString)" 寫法 也會失效的.

=================================================================

另外呢 , 就如同 WebReference 的連線 可以 不使用 精靈產生相關的 Class 而用手工建構的方式來達成連線

相信 EF 也是一樣 可以 手工打造相關的 Class .

不過 , 這應該沒多少人 會 這樣做.
本篇文章回覆於2012-09-28 11:14
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

阿源哥哥
捐贈 VP 給 阿源哥哥 檢舉此回應
真的是改很多,以前是用 AddObject 現在卻變成 Add ~~~~

看來應該還有其他地方要改,只是個人實在很納悶,不是向下相容嗎?

以前常聽傳言,微軟的東西要很第3版才開始學起,難不成以後要改成從第5版學起才保險。


而自訂連線字串使用#3所提供的方法新增一個partial class並沒有成功,

一定是有其他的方法,只是沒有時間再搞下去,看來只能等到新書出來再來研究了,

目前就使用內訂的從Web.config讀取連線字串好了。

本篇文章回覆於2012-10-01 20:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

阿源哥哥
捐贈 VP 給 阿源哥哥 檢舉此回應
又發現一個不一樣的地方:

以前是DeleteObject現在是Remove

本篇文章回覆於2012-10-02 10:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

KKBruce
捐贈 VP 給 KKBruce 檢舉此回應
那都是LINQ to SQL的語法,或是說ObjectContext的語法,

現在Entity Framework從4.x開始都改用DbContext,它的命名都比較正常一些。
本篇文章回覆於2012-10-02 10:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

MIS2000 Lab
檢舉此回應
例如
Using u_context As New ObjectContext("name=testEntities")

把 Web.Config裡面的連結字串,直接用上去
<add name="testEntities" connectionString="metadata=res://*/App_Code......

EF 5.0變化不少,我要傷腦筋了
很多程式動不了
http://www.dotblogs.com.tw/mis2000lab/archive/2012/10/02/ef_50_20121002.aspx
本篇文章回覆於2012-10-02 14:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

聖暉
捐贈 VP 給 聖暉 檢舉此回應
剛好專案有類似這種需求,找到這討論串...
提供網路找的一個方式,僅供參考..

https://dotblogs.com.tw/whd/2016/04/17/012608
本篇文章回覆於2016-11-04 10:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.