C#?使用EntityFramework?CodeFirst?創(chuàng)建PostgreSQL數(shù)據(jù)庫(kù)的詳細(xì)過(guò)程
C# 使用EntityFramework CodeFirst 創(chuàng)建PostgreSQL數(shù)據(jù)庫(kù)
1.先創(chuàng)建一個(gè)ASP.Net Web應(yīng)用程序,選擇Web API

2、創(chuàng)建EntityLib、EF、AppService三個(gè)類(lèi)庫(kù)。EntityLib用于存放數(shù)據(jù)庫(kù)表所對(duì)應(yīng)的實(shí)體,AppService用于編寫(xiě)用戶(hù)對(duì)實(shí)體的一些操作方法,如增刪改查等操作。

創(chuàng)建好所有類(lèi)庫(kù)之后,需要添加引用庫(kù)EntityFramework6.Npgsql,右擊項(xiàng)目中的引用———》管理NuGet程序包———》搜索EntityFramework6.Npgsql添加到項(xiàng)目中,這個(gè)庫(kù)會(huì)自動(dòng)添加EntityFramework6和Npgsql的引用。需要給EF、AppService和API都添加這個(gè)引用。添加完成之后就開(kāi)始寫(xiě)各個(gè)類(lèi)庫(kù)相應(yīng)的代碼了。
EFContext類(lèi)
public class EFContext : DbContext
{
public EFContext() : base("Postgresql")//連接字符串名稱(chēng)
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("public");//EF默認(rèn)創(chuàng)建到dbo架構(gòu)中,而PostgreSQL默認(rèn)為public架構(gòu)
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}
public DbSet<User> Users { get; set; }
}User類(lèi)
[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類(lèi)
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;
}
}
}完成類(lèi)的編寫(xiě)之后,需要添加數(shù)據(jù)庫(kù)連接字符串,打開(kāi)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.進(jìn)行數(shù)據(jù)遷移,通過(guò)命令將實(shí)體類(lèi)導(dǎo)入數(shù)據(jù)庫(kù)生成相應(yīng)的數(shù)據(jù)庫(kù)表。先打開(kāi)VS的工具,然后點(diǎn)擊NuGet包管理器 ,選擇程序包管理器控制臺(tái),默認(rèn)項(xiàng)目改為EF,輸入以下三行命令

1-》enable-migrations
2-》add-migration
3-》update-database
去PostgreSQL數(shù)據(jù)庫(kù)去查看發(fā)現(xiàn)已經(jīng)生成好了數(shù)據(jù)庫(kù)和對(duì)應(yīng)的表了,這里因?yàn)槲襭ostgres數(shù)據(jù)庫(kù)已經(jīng)有User表了,所以修改了一下數(shù)據(jù)庫(kù)連接字符串

到此這篇關(guān)于C# 使用EntityFramework CodeFirst 創(chuàng)建PostgreSQL數(shù)據(jù)庫(kù)的文章就介紹到這了,更多相關(guān)C# 創(chuàng)建PostgreSQL數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#中使用IFormattable實(shí)現(xiàn)自定義格式化字符串輸出示例
這篇文章主要介紹了C#中使用IFormattable實(shí)現(xiàn)自定義格式字符串輸出示例,本文直接給出實(shí)例代碼,需要的朋友可以參考下2015-06-06
C#實(shí)現(xiàn)簡(jiǎn)單的3DES加密解密功能示例
這篇文章主要介紹了C#實(shí)現(xiàn)簡(jiǎn)單的3DES加密解密功能,結(jié)合實(shí)例形式分析了C#實(shí)現(xiàn)3DES加密解密的定義、使用等具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-08-08
C#生成圖形驗(yàn)證碼的實(shí)現(xiàn)方式
我們當(dāng)用戶(hù)登錄系統(tǒng)時(shí)經(jīng)常會(huì)用到圖形驗(yàn)證碼技術(shù),要求用戶(hù)識(shí)別圖片中的內(nèi)容,并正確輸入,方可嘗試登錄,因此,圖形驗(yàn)證碼是一個(gè)網(wǎng)絡(luò)安全技術(shù)手段,圖形驗(yàn)證碼的呈現(xiàn)形式有很多種,這里我們將介紹最基本的生成方式,感興趣的朋友可以參考下2024-04-04
C# XML與Json之間相互轉(zhuǎn)換實(shí)例詳解
這篇文章主要介紹了C# XML與Json之間相互轉(zhuǎn)換實(shí)例詳解,大家參考使用吧2013-11-11

