1.先創建一個ASP.Net Web應用程式,選擇Web API 2、創建EntityLib、EF、AppService三個類庫。EntityLib用於存放資料庫表所對應的實體,AppService用於編寫用戶對實體的一些操作方法,如增刪改查等操作。 創建好所有類庫之後,需要添加引用庫EntityF ...
1.先創建一個ASP.Net Web應用程式,選擇Web API
2、創建EntityLib、EF、AppService三個類庫。EntityLib用於存放資料庫表所對應的實體,AppService用於編寫用戶對實體的一些操作方法,如增刪改查等操作。
創建好所有類庫之後,需要添加引用庫EntityFramework6.Npgsql,右擊項目中的引用———》管理NuGet程式包———》搜索EntityFramework6.Npgsql添加到項目中,這個庫會自動添加EntityFramework6和Npgsql的引用。需要給EF、AppService和API都添加這個引用。添加完成之後就開始寫各個類庫相應的代碼了。
EFContext類
public class EFContext : DbContext { public EFContext() : base("Postgresql")//連接字元串名稱 { } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.HasDefaultSchema("public");//EF預設創建到dbo架構中,而PostgreSQL預設為public架構 modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); base.OnModelCreating(modelBuilder); } public DbSet<User> Users { get; set; } }
User類
[Table("User",Schema ="public")] public class User { [Key] [Required] [Column("ID")] public int ID { get; set; } public string Name { get; set; } public string Account { get; set; } public string Password { get; set; } }
AppService類
public class UserService { public void AddUser(User user) { try { using (var db = new EFContext()) { db.Users.Add(user); db.SaveChanges(); } } catch (Exception e) { string msg = e.Message; } } public void DeleteUserByID(int id) { try { using (var db = new EFContext()) { db.Users.Remove(db.Users.Find(id)); db.SaveChanges(); } } catch (Exception e) { string msg = e.Message; } } public void EditUser(User user) { try { using (var db = new EFContext()) { User u = db.Users.Find(user.ID); u.Name = user.Name; u.Account = user.Account; u.Password = user.Password; db.SaveChanges(); } } catch (Exception e) { string msg = e.Message; } } public User FindUserByID(int id) { try { using (var db = new EFContext()) { User user = db.Users.Find(id); return user; } } catch (Exception e) { string msg = e.Message; return null; } } public List<User> FindAll() { try { using (var db = new EFContext()) { List<User> users = db.Users.ToList(); return users; } } catch (Exception e) { string msg = e.Message; return null; } } }
完成類的編寫之後,需要添加資料庫連接字元串,打開API的web.config文件添加:
<connectionStrings> <add name="Postgresql" connectionString="PORT=502;DATABASE=postgres;HOST=10.60.140.1;PASSWORD=007;USER ID=postgres" providerName="Npgsql" /> </connectionStrings>
3.進行數據遷移,通過命令將實體類導入資料庫生成相應的資料庫表。先打開VS的工具,然後點擊NuGet包管理器 ,選擇程式包管理器控制台,預設項目改為EF,輸入以下三行命令
1-》enable-migrations
2-》add-migration
3-》update-database
去PostgreSQL資料庫去查看發現已經生成好了資料庫和對應的表了,這裡因為我postgres資料庫已經有User表了,所以修改了一下資料庫連接字元串