最近在忙著準備證照跟轉職,忙著洽談轉職,心很累阿為自己堅持到現在,先給自己拍拍手(才第四天還敢拍手啊!?)
Day2我已經建好我的Tables了,那今天的目標就是”Entity Framework Core 對應資料庫”。
我增加的是下列這幾個,在PowerShell輸入指令安裝。
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package EntityFramework
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
要找各種資料庫的package可以參考https://docs.microsoft.com/zh-tw/ef/core/providers/?tabs=dotnet-core-cli
把現有的DB對應起來,指令如下
dotnet ef dbcontext scaffold "server=DBOST;database=DBNAME;User ID=USERID;Password=Password;trusted_connection=true;Integrated Security=False;" microsoft.entityframeworkcore.sqlserver -o Models
完成後可以在Models下看到對應的檔案。
接下來請到Context, 裡面有連線字串,打開來會看到下面這一段。
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
#warning To protect potentially sensitive information in your connection string, you should move it out of source code. See http://go.microsoft.com/fwlink/?LinkId=723263 for guidance on storing connection strings.
optionsBuilder.UseSqlServer("連線字串");
}
}
將連線字串拿掉或是整個OnConfiguring移除也可以,改由寫在 appsettings.json 裡面。
在"AllowedHosts": "*"
後面加上
,
"ConnectionStrings": {
" ConnectionStrings 名稱": "連線字串"
}
再來,於 Startup.cs 中的ConfigureServices function中設定 DbContext,讓 DbContext 可以被建構式使用。
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddDbContext<ithelp12Context>(options =>
options.UseSqlServer(Configuration.GetConnectionString("ithelp12")));
}
到這邊是我照網路上的設定,BUT卻不能使用,查了網路上很多解法但都無效(如果有人有解答拜託教教菜逼八如我!),所以我最後其實是把protected override void OnConfiguring裡刪除的連線字串放回去了,那明天先來談談post的跟get的概念,還有學學EF CORE的新增、查詢及修改,再來做超簡易的註冊功能。
顯示的錯誤
參考的解法
https://www.thecodebuzz.com/no-database-provider-has-been-configured-for-this-dbcontext/
https://entityframeworkcore.com/zh-TW/knowledge-base/59861448/
DAY4心得:今天好累,不想打心得。