用asp.net core 2.0 + EFCore.Sqlite做個小網站


許久沒用C#寫程序。聽說進來發生大事,.NetCore2.0發布了,於是便學習了下,本站也應運而生。

大多數的地方按照官方的文檔起步走就可以了,這里談談遇到的幾個坑。

首先,本站是基於ASP.NetCore2.0和EntityFrameWorkCore.Sqlite的,前端使用了layui,搭建於CentOS7上。

ASP.NetCore部分沒有什么難度,選擇MVC方式,基本上和原來的asp.net mvc差不多。不過我也是很久沒有用過mvc了,所以摸索了一下,tagHelper很好用。

主要說說EFC,目前是EFC2.0,不支持延遲查詢,所以每一個表關聯查詢需要Include()。然后表關聯上也不能用多對多,不過多對多的地方可以加中間類來解決。

比如一篇文章有多個分類,而一個分類也有多篇文章。這里用到了多對多的關聯,所以我增加了一個中間關聯的類型,包含文章和分類的ID。用兩個一對多的關聯,規避了多對多的關聯。

EF還有一個控制台命令 dotnet ef

使.NetCore2.0網站項目支持EF.Sqlite

1)添加appsettings.json,並配置sqlite的連接字符串

"sqlitedb": "Filename=./sqlitedb.db"

注意appsettings.json添加完之后設置屬性為復制到輸出目錄

2)在Startup中啟用服務

添加引用:

using Microsoft.Extensions.Configuration;

using Microsoft.EntityFrameworkCore;

添加屬性:

public IConfiguration Configuration { get; set; }

添加構造:

       public Startup()

        {

            var builder = new ConfigurationBuilder()

               .AddJsonFile("appsettings.json");

            Configuration = builder.Build();

        }

在ConfigureServices()啟用:

var connection = Configuration.GetConnectionString("sqlitedb");

services.AddDbContextPool<DataContext>(options => options.UseSqlite(connection));

此時缺少DataContext類,新建之在Data文件夾下

支持Identity

1)編輯DataContext

添加引用:

using Microsoft.AspNetCore.Identity.EntityFrameworkCore;

using Microsoft.EntityFrameworkCore;

繼承IdentityDbContext<User>

添加非默認構造函數:

       public DataContext(DbContextOptions<DataContext> options)

            : base(options)

        {

        }

2)此時缺少User類,新建之在Model文件夾下,並繼承自IdentityUser

在User類中添加引用:

using Microsoft.AspNetCore.Identity;

3)在Startup類中

ConfigureServices()里啟動服務:

    services.AddMvc();

    services.AddIdentity<User, IdentityRole>().AddEntityFrameworkStores<DataContext>().AddDefaultTokenProviders();

在Pipeline的Configure()函數中進行身份驗證:

app.UseAuthentication();

此后可以在Controller里使用[Authorize]標簽驗證登錄身份了

使用EF工具生成數據庫結構

1)右鍵編輯項目文件csproj

在ItemGroup中添加

<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />

2)打開項目所在目錄,按住shift后右鍵呼出菜單打開命令行

在命令行中輸入:

dotnet ef migrations add InitialCreate

名稱可替換

如果遇到錯誤,請分析錯誤原因

之后會在項目下生成一個Migrations文件包含了數據庫結構相關代碼

輸入下面命令並回車,使之生效:

dotnet ef database update

然后就會出現appsettings.json中配置的數據庫文件.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM