本文仅是为总结一下如何使用linq2db连接数据库MySql的使用,加深一下自己的理解。主要是照着官网的教程进行各个步骤的学习。
在本练习中,您将配置 ASP.NET Core 应用程序以使用 LINQ To DB 访问本地MySql 数据库。(本人为C#初学者,发现关于linq2db连接mysql的文章比较少,本文主要为翻译官方文档的操作过程)
先决条件
这里按本人的软件版本来进行练习。VS2019和MySql5.7.19,两款软件。
1.创建一个新项目
首先,创建一个新的 ASP.NET Core 应用程序。按照下面创建项目的过程点击下一步直到成功创建一个项目。
2.安装相应的包
右击依赖项,点击管理NuGet程序包,进入以下界面,然后进行相应的搜索安装下图所示的三个包。
3.自定义数据连接
我们将创建一个用于访问 LINQ To DB 的自定义数据连接,创建一个这样的类:(在项目中右击本项目名,选择添加,类,把AppDataConnection类名输入,最后点击添加。将下面代码复制粘贴覆盖创建的AppDataConnection类函数,同时添加下面两个using的库。
using LinqToDB.Configuration;
using LinqToDB.Data;
public class AppDataConnection: DataConnection
{
public AppDataConnection(LinqToDbConnectionOptions<AppDataConnection> options)
:base(options)
{
}
}
注:这里我们AppDataConnection继承了 Linq2Db 连接的基类LinqToDB.Data.DataConnection。
4.添加连接字符串
对于这个例子,使用MySql,首先,您要将连接字符串添加到appsettings.Development.json,如下所示:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
//add this添加的
"ConnectionStrings": {
"Default": "Server=localhost;Port=3306;Database=MyDatabase;Uid=root;Pwd=TestPassword;charset=utf8;" //<-- connection string, used in the next step
}
}
(我一开始把连接字符串前面的“Default”给去掉了,害我连了好久老是出问题)
5.配置依赖注入
接着在Startup.cs里面,将下面这块代码插入到ConfigureServices这里进行数据连接注册:
public class Startup
{
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
//...
//using LinqToDB.AspNet
services.AddLinqToDbContext<AppDataConnection>((provider, options) => {
options
//will configure the AppDataConnection to use
//MySql with the provided connection string
//there are methods for each supported database
.UseMySql(Configuration.GetConnectionString("Default"))
//default logging will log everything using the ILoggerFactory configured in the provider
.UseDefaultLogging(provider);
});
//...
}
}
6.简单实体类的配置
在项目中创建这个简单的实体类Person。
using System;
using LinqToDB.Mapping;
public class Person
{
[PrimaryKey]
public int Id { get; set; }
public string Name { get; set; }
public DateTime Birthday { get; set; }
}
7.将表属性添加到数据连接
打开我们的AppDataConnection并添加这个属性。
public class AppDataConnection: DataConnection
{
//...将下面这个表属性
public ITable<Person> People => GetTable<Person>();
//...
}
现在我们可以将我们的数据连接注入控制器并使用ITable接口查询和插入/更新/删除。
由于我们没有创建实际的数据库,需要将此代码添加到配置方法中 Startup.cs。
public class Startup
{
//...
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//...这个方法只用在第一次运行时添加,运行成功后会在数据库中生成相应的person表,当生成完这个表后,后面再运行的话需要将这个方法给注释掉,不然会报错
using (var scope = app.ApplicationServices.CreateScope())
{
var dataConnection = scope.ServiceProvider.GetService<AppDataConnection>();
dataConnection.CreateTable<Person>();
}
//...
}
}
//...
8.将连接注入控制器
为了实际访问数据库,我们将要从控制器使用它,这里有一个示例控制器PeopleController ,在controllers文件夹里面新建一个PeopleController 类。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using LinqToDB;
using Microsoft.AspNetCore.Mvc;
namespace WebApplication2.Controllers
{
public class PeopleController : Controller
{
private readonly AppDataConnection _connection;
public PeopleController(AppDataConnection connection)
{
_connection = connection;
}
[HttpGet]
public Task<Person[]> ListPeople()
{
return _connection.People.ToArrayAsync();
}
[HttpGet("{id}")]
public Task<Person?> GetPerson(int id)
{
return _connection.People.SingleOrDefaultAsync(person => person.Id == id);
}
[HttpDelete("{id}")]
public Task<int> DeletePerson(int id)
{
return _connection.People.Where(person => person.Id == id).DeleteAsync();
}
[HttpPatch]
public Task<int> UpdatePerson(Person person)
{
return _connection.UpdateAsync(person);
}
[HttpPatch("{id}/new-name/new-birthday")]
public Task<int> UpdatePersonName(int id, string newName, DateTime newBirhday)
{
return _connection.People.Where(person => person.Id == id)
.Set(person => person.Name, newName)
.Set(person => person.Birthday, newBirhday)
.UpdateAsync();
}
[HttpPut]
public Task<int> InsertPerson(Person person)
{
return _connection.InsertAsync(person);
}
[HttpPut("{id}/name/birthday")]
public Task<int> InsertPersonInfo(Person person)
{
return _connection.InsertAsync(person);
}
}
}
运行结果
启动程序(选你的项目名称那启动)。
就可以看到四个选项,可以进行增删查改操作了。
小结:本人为初学者,仅仅是把官方的教程实践了一下,学习了一下关于.net core linq2db连接数据库MySql的使用。不足之处敬请谅解,欢迎批评建议。