希格工作室

顯示具有 記錄 標籤的文章。 顯示所有文章
顯示具有 記錄 標籤的文章。 顯示所有文章

2019年9月30日 星期一

.NET Core 2.1 DI AddDbContext BUG

.NET Core 2.1 bug

錯誤訊息:
No database provider has been configured for this DbContext. A provider can be configured by overriding the DbContext.OnConfiguring method or by using AddDbContext on the application service provider. If AddDbContext is used, then also ensure that your DbContext type accepts a DbContextOptions<TContext> object in its constructor and passes it to the base constructor for DbContext.

原因:
透過AddDbContext進來的EFCore會發生optionsBuilder.IsConfigured永遠為true,造成無法運作,直到更新至2.1.11才被修正

過程:
Code-first加入方式Scaffold-DbContext

Startup.cs
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

            services.AddDbContext<Models.Test.TContext>();
        }


ValuesController.cs
    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        private readonly Models.Test.TContext context;

        public ValuesController(Models.Test.TContext context)
        {
            this.context = context;
        }

        // GET api/values
        [HttpGet]
        public ActionResult<IEnumerable<string>> Get()
        {
            var tb = context.Table2.FirstOrDefault();
            return new string[] { "value1", "value2" };
        }
    }
}


Context.cs








修正方式:
三種修正方式(擇一即可)
1.更新至.Net Core 2.1.11up或.Net Core 2.2
2.如果將Context透過繼承也會避開
3.改使用AddTransient<T>註冊



2.將Context透過繼承也會避開















































3.改使用AddTransient<T>註冊












結語:
能更新上去就更新上去,但因為我平台在AWS上,而aws toolkit for visual studio的預設專案範本不支援.NET Core2.2up,若要使用過於複雜不適合目前環境,故只能持續使用2.1版,所以更新2.1.11版是最佳解,其次是透過繼承也能順便解決其它自定義的東西。





2016年7月5日 星期二

2016年7月1日 星期五

[Nuget]從伺服器到發佈一次搞定 使用VisualStudio - Step2 建立你的Nuget分享套件

1.至Visual Studio的擴充功能下載 Nuget Packager







2.重啟Visual Studio後新增專案,會在專案範本看到Nuget選項,用它新增新專案





3.開啟專案後,到NuGet.Config去修改參數,把value改成你架設的Nuget私人網站




4.開啟命令字元,到剛才的專案目錄中,利用專案附載的Nuget.exe建立你的api key
nuget.exe setApiKey {password} -Source {httq://xxx.xxx/nuget}




5.最後到Package.nuspec設定你的套件相關內容資訊,即完成設置動作。






6.最後依你的套件性質,把對應的檔案放在預設的幾個資料夾內就可以了
content : 套件的檔案,依content 下的路徑產生
lib :使用到的DLL參考
src


7.發佈時只要使用建置就會自動發佈,Visual Studio的建置選項為Debug時只會編譯不會發佈,設定成Release才會發佈。






本文為記錄操作步驟 說明建議參考:
http://blog.darkthread.net/post-2016-04-28-nuget-packager.aspx
http://blog.sanc.idv.tw/search/label/NuGet
http://blog.darkthread.net/post-2011-03-29-create-nuget-package.aspx

[Nuget]從伺服器到發佈一次搞定 使用VisualStudio - Step1 架設自己的Nuget伺服器

1.在Visual Studio新建空的Web專案

2.上Nuget套件中找 Nuget.Server 並安裝




3.不過因為新版以不支援.Net 4.5 所以如果還在4.5的要自行下載舊版本
PM> Install-Package NuGet.Server -Version 2.11.1



4.在Web.Config輸入網站的Push API密碼



5.編譯成功後直接部到IIS上,結束

本文為記錄操作步驟 說明建議參考:
http://blog.darkthread.net/post-2011-05-27-nuget-server.aspx
http://blog.darkthread.net/post-2011-09-03-nuget-1-5-support-authentication.aspx