隨着Asp.NET5的開源,以及跨平台,ORM框架EF7也與時俱進,支持asp.net core,也支持關系型數據庫和非關系型數據庫,以及在linux和mac上跨平台使用。
下面演示的即通過使用EF7 操作sqllite數據庫
1、用vs2015新建winform項目,打開nuget,下載安裝EntityFramework.SQLite
2、新建Game實體,代碼如下
public class Game { [System.ComponentModel.DataAnnotations.Key] public string Id { get; set; } public int Duration { get; set; } public int Clicks { get; set; } public double ClickPerSecond { get; set; } public DateTime Played { get; set; } }
3、新建上下文GameContext
在下面創建數據庫中可以發現,使用sqllite數據庫變得非常簡單,只需option. UseSQLite即可。
public class GameContext :DbContext { public DbSet<Game> Games { get; set; } /// <summary> /// 配置創建數據庫 /// </summary> /// <param name="options"></param> protected override void OnConfiguring(DbContextOptions options) { ///只需使用sqllite即可 options.UseSQLite("Filename=game3.db"); } }
4、程序初始化時創建數據庫文件
如果數據庫已經存在,則不會重復創建
public Form1() { InitializeComponent(); //創建數據庫 using (var db = new GameContext()) { //如果創建了,則不會重新創建 bool flag = db.Database.EnsureCreated(); Console.WriteLine(flag); } ReadData(); }
5、生成數據,通過點擊加入數據
private static List<Game> _Games = new List<Game>(); private static int nums=0; private void BtnOk_Click(object sender, EventArgs e) { nums = nums + 1; while (nums > new Random().Next(3, 7)) { GameService.RecordGame(3, nums); nums = 0; lblInfo.Text = "前三名成績"; ReadData(); } }
6、程序截圖
總體來說,EF7集成了更多數據庫支持,更方便的開發。不過codefirst時,enable-migratons不能再控制台使用,這個還得再排查原因。
源碼已經放到git上,地址為:https://github.com/flowbywind/Winform/tree/master/ClickGame