如題請教:
1.原生方法如下,在web.config裡建一個DemoEntities2的ConnectionString
public partial class DemoEntities2 : DbContext
{
public DemoEntities2()
: base("name=DemoEntities2")
{
}
2.用ConfigurationManager抓取web.config的字串帶入DbContext也是可以連線成功
public DemoEntities()
: base(ConfigurationManager.ConnectionStrings["DemoEntities2"].ConnectionString)
{
}
3.將ConfigurationManager字串複製貼上,這樣的方式就沒辦法運作,DB應該是有連上,但就發生錯誤。
public DemoEntities()
: base("metadata = res://*/Models.Demo2.csdl|res://*/Models.Demo2.ssdl|res://*/Models.Demo2.msl;provider=System.Data.SqlClient;provider connection string=\"data source=localhost;initial catalog=Demo;persist security info=True;user id=submission;password=1234;MultipleActiveResultSets=True;App=EntityFramework")
{
}
錯誤訊息如下
初始化字串的格式和開始於索引 119 的規格不相符。
描述: 在執行目前 Web 要求的過程中發生未處理的例外狀況。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。
例外狀況詳細資訊: System.ArgumentException: 初始化字串的格式和開始於索引 119 的規格不相符。
原始程式錯誤:
行 20: {
行 21: ViewBag.conn = ConfigurationManager.ConnectionStrings["DemoEntities2"].ConnectionString;
行 22: return View(db.ProfessionalL1.ToList());
行 23: }
行 24:
專案為全新開的測試專案,MVC全部都由EF自動產生,資料庫也是全新開的,只建4個簡單資料表,各有2~3筆資料
想問的問題不是要解決這個Error,而是如果DB的帳密如果不寫在web.config裡,要如何把帳密寫入到DbContext讓它能正常運作呢?
原意就是想要把DB的帳密隱藏起來,不要寫在web.config裡
謝謝
只需要connectionstring就可以,如圖片
code like :
public DemoEntities()
: base("data source=localhost;initial catalog=Demo;persist security info=True;user id=submission;password=Etpc@1234;MultipleActiveResultSets=True;App=EntityFramework")
{
}
我丟進去運行產生以下錯誤,我其實也有試過截取部份ConnectionString丟進去,都一樣是這個Error產生
在 Code First 模式中使用 EDMX 檔案產生程式碼以進行 Database First 和 Model First 開發,可能無法正常運作。若要修正此問題,請勿移除擲出此例外狀況的程式碼行。若希望使用 Database First 或 Model First,請確定已在啟動專案的 app.config 或 web.config 中納入 Entity Framework 連接字串。若要建立自己的 DbConnection,請確定其為 EntityConnection 而不是其他類型的 DbConnection,接著將其傳送到其中一個具有 DbConnection 的基礎 DbContext 建構函式。如需深入了解 Code First、Database First 以及 Model First,請參閱以下 Entity Framework 文件: http://go.microsoft.com/fwlink/?LinkId=394715
描述: 在執行目前 Web 要求的過程中發生未處理的例外狀況。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。
例外狀況詳細資訊: System.Data.Entity.Infrastructure.UnintentionalCodeFirstException: 在 Code First 模式中使用 EDMX 檔案產生程式碼以進行 Database First 和 Model First 開發,可能無法正常運作。若要修正此問題,請勿移除擲出此例外狀況的程式碼行。若希望使用 Database First 或 Model First,請確定已在啟動專案的 app.config 或 web.config 中納入 Entity Framework 連接字串。若要建立自己的 DbConnection,請確定其為 EntityConnection 而不是其他類型的 DbConnection,接著將其傳送到其中一個具有 DbConnection 的基礎 DbContext 建構函式。如需深入了解 Code First、Database First 以及 Model First,請參閱以下 Entity Framework 文件: http://go.microsoft.com/fwlink/?LinkId=394715
原始程式錯誤:
行 23: protected override void OnModelCreating(DbModelBuilder modelBuilder)
行 24: {
行 25: throw new UnintentionalCodeFirstException();
行 26: }
行 27:
資料程式寫成 Web API 連結端用 JWT 來取得認證碼,方便又好管理!!
現階段以此方式我給於 前端(angular typescript)、Android、iOS 來存取這些資料,方便管理與應用..
不知你用的 Visual Studio 是那一版,2017、2019 可以用 EF Core Power Tools
做出來的DbContext 可以包含連線字串