使用的.net core版本:3.1
1、添加包Npgsql.EntityFrameworkCore.PostgreSQL
2、创建数据库类
public partial class Context : DbContext
{
private static bool init = false;
public Context(string connectionString)
: base(new DbContextOptionsBuilder().UseNpgsql(connectionString).Options)
{
if (!init)
{
Database.EnsureCreated();
init = true;
}
}
public Context(DbContextOptions<Context> options) : base(options)
{
if (!init)
{
Database.EnsureCreated();
init = true;
}
}
//表的实体类,使用的时候直接用Users.
public DbSet<User> Users { get; set; }
//可以有多个
//public DbSet<Publish> Publishes { get; set; }
}
其中User实体类长这样:
[Table(TABLE_NAME)] //设置表名
public class User
{
public const string TABLE_NAME = "user";
[Key] //设置主键
[DatabaseGenerated(DatabaseGeneratedOption.Identity)] //主键自增长
[Column("id")] //列名
public long Id { get; set; }
[Column("username")]
public string UserName { get; set; }
[Column("password")]
public string PassWord { get; set; }
[Column("create_time")]
public DateTime CreateTime { get; set; }
[Column("state")]
public UserState State { get; set; }
}
整体文件结构(随意):
3、配置链接字符串,在appsettings.json里添加:
"ConnectionStrings": {
"Default": "Host={host};Database={baseName};Username={username};Password={password}"
},
4、在Startup.cs的ConfigureServices里加上
services.AddDbContext<Context>(options =>
options.UseNpgsql(Configuration.GetConnectionString("Default")));
ps:可以用其他数据库,比如要换成sqlserver时,引用Microsoft.EntityFrameworkCore.SqlServer包,再把options.UseNpgsql改成options.UseSqlServer就可以了
5、简单使用方法:
public class AuthorizeController : Controller
{
private readonly Context _context;
public AuthorizeController(Context context)
{
_context = context;
}
/// <summary>
/// 根据用户ID获取用户名
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public async Task<string> GetUserName(long id)
{
var user = await _context
.Users.Where(o => o.Id == id).FirstOrDefaultAsync();
return user.UserName;
}
}