尝试.Net Core—使用.Net Core + Entity FrameWork Core构建WebAPI(一)
想嘗試.Net Core很久了,一直沒有時間,今天回家,拋開一切,先搭建一個.Net Core的Demo出來玩玩。
廢話少說,咱直奔主題:
一、開發環境
VS2015 Update3?
Microsoft .NET Core Tools(Preview 2)
本來想用VS Code來著,但是本著最簡單原理,這里先用VS 2015,我又不是受虐狂,為啥有好用的工具擺在這里不用呢,你說是吧?
二、新建解決方案
與ASP.NET時代沒有什么區別,直接新建一個解決方案,在左邊選擇.NET Core, 然后項目模版選擇ASP.NET Core Web Application(.NET Core) 如下圖。
然后填寫解決方案名稱和項目名稱,并選擇保存路徑(這和以前完全一樣)。然后到了第二步,選擇Web API模版,身份驗證方式選擇無身份驗證(這里只是Demo,身份驗證咱就不折騰了吧,畢竟這個往往非常復雜)。并且去掉他默認打上的Host In Cloud的勾(如果你有Azure的服務器,可以勾上)。
到此,項目就創建完畢了。你可以直接點上面的運行,把項目跑起來,會直接打開一個默認的API(ValueContrller)。
這里我又創建了一個.NET Core的類庫項目,用來作為數據庫訪問層,名稱為DataAccess,這個跟原來.NET 時代的類庫項目沒有什么區別,只是需要建成.NET Core類庫。
新建完成的解決方案結構如下:
三、開始Coding
這里我以獲取本地某個數據庫中Address表的前10條記錄為例。
1.新建一個實體類Address
使其字段與數據庫一一對應,記得不要忘了設置主鍵(Id)上面的[Key]特性標簽。
public class Address{[Key]public Guid Id { get; set; }public string OpenId { get; set; }/// <summary>/// 收件人姓名/// </summary>public string Name { get; set; }/// <summary>/// 詳細收貨地址(目前僅限與榆林學院)/// </summary>public string DetailAddress { get; set; }/// <summary>/// 聯系電話/// </summary>public string Tel { get; set; }/// <summary>/// 是否默認地址/// </summary>public bool IsDefault { get; set; }}2.添加引用
通過Nuget為項目DataAccess和WebTest引用Microsoft.EntityFrameworkCore和Microsoft.EntityFrameworkCore.SqlServer
3.新建EF Core上下文(EFDbContext)
public class EFDbContext: DbContext{public EFDbContext(DbContextOptions<EFDbContext> options):base(options){}public DbSet<Address> Address { get; set; }}4.配置EFDbContext的啟動項
在Web項目的StartUp類中,找到ConfigureServices方法,新增EF的啟動項,代碼如下面的第一句:
public void ConfigureServices(IServiceCollection services){services.AddEntityFrameworkSqlServer().AddDbContext<EFDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SqlServer")));// Add framework services. services.AddApplicationInsightsTelemetry(Configuration);services.AddMvc();}這里面有兩個地方需要說明:
- 這個方法會在項目啟動的時候被調用,并且EFDbContext會被注冊到ASP.NET Core自帶的IOC中,以后就可以在別的地方直接注入EFDbContext了(下面會用到)。
- Configuration.GetConnectionString("SqlServer")這是去讀系統的配置,系統配置都在appsettings.json文件中,需要手動添加一下配置,添加完成后類似于:
5.WebAPI Controller
首先,上代碼~
[Route("api/address")] public class AddressController : Controller {private EFDbContext _context;public AddressController(EFDbContext context){_context = context;}[HttpGet,Route("getall")]public IList<Address> GetAll(){var list= _context.Address.Take(10).ToList();return list;} }下面來聽我慢慢道來。
- 首先: [Route("api/address")]這個是用來定義API的公共部分,這個如果你有過WebAPI的開發經驗,這個非常容易看懂,在WebAPI中,這個會被寫成[RoutePreFix("api/address")]
- 其次,我們看到EFDbContext是通過構造函數被注入了,這個就會用到我們在上面StartUp類中所配置的信息。
- 接下來,方法GetAll上面的特性標簽[HttpGet]定義了該API的請求謂詞,Route("getall")定義了該API的地址,最終,這個地址和在Controller上面的Route會共同來決定這個API的地址,本例中這個GetAll方法最終生成的API地址為:/api/address/getall
- 接下來,使用_context對象來進行數據庫操作,這個和EF是完全一樣的~
至此,我的Demo代碼就寫完了,直接F5運行,瀏覽器手動敲個地址/api/address/getall就可以訪問到數據庫里面的前十條數據啦~
轉載于:https://www.cnblogs.com/baiyunchen/p/5665100.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的尝试.Net Core—使用.Net Core + Entity FrameWork Core构建WebAPI(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (计算机组成原理)第二章数据的表示和运算
- 下一篇: (计算机组成原理)第五章中央处理器-第三