1. 使用ADO.NET
using System.Data.SqlClient;
public class DatabaseOperations
{
private string connectionString = "your_connection_string";
public void InsertData(string data)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
string query = "INSERT INTO YourTable (Column) VALUES (@data)";
using (SqlCommand cmd = new SqlCommand(query, conn))
{
cmd.Parameters.AddWithValue("@data", data);
conn.Open();
cmd.ExecuteNonQuery();
}
}
}
public void UpdateData(int id, string data)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
string query = "UPDATE YourTable SET Column = @data WHERE Id = @id";
using (SqlCommand cmd = new SqlCommand(query, conn))
{
cmd.Parameters.AddWithValue("@data", data);
cmd.Parameters.AddWithValue("@id", id);
conn.Open();
cmd.ExecuteNonQuery();
}
}
}
public void DeleteData(int id)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
string query = "DELETE FROM YourTable WHERE Id = @id";
using (SqlCommand cmd = new SqlCommand(query, conn))
{
cmd.Parameters.AddWithValue("@id", id);
conn.Open();
cmd.ExecuteNonQuery();
}
}
}
public DataTable GetData()
{
DataTable dt = new DataTable();
using (SqlConnection conn = new SqlConnection(connectionString))
{
string query = "SELECT * FROM YourTable";
using (SqlCommand cmd = new SqlCommand(query, conn))
{
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
}
}
return dt;
}
}
直接使用原生SQL语句,灵活且控制力强。
适合复杂的查询和数据库操作。
代码冗长,需要手动编写SQL语句。
容易出现SQL注入安全风险。
当需要对数据库进行细粒度控制时。
当需要执行复杂的SQL操作时。
2. 使用Entity Framework Core
using Microsoft.EntityFrameworkCore;
public class YourDbContext : DbContext
{
public DbSet<YourEntity> YourEntities { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlServer("your_connection_string");
}
public class DatabaseOperations
{
private readonly YourDbContext _context;
public DatabaseOperations(YourDbContext context)
{
_context = context;
}
public void InsertData(YourEntity entity)
{
_context.YourEntities.Add(entity);
_context.SaveChanges();
}
public void UpdateData(YourEntity entity)
{
_context.YourEntities.Update(entity);
_context.SaveChanges();
}
public void DeleteData(int id)
{
var entity = _context.YourEntities.Find(id);
if (entity != null)
{
_context.YourEntities.Remove(entity);
_context.SaveChanges();
}
}
public List<YourEntity> GetData()
{
return _context.YourEntities.ToList();
}
}
简化了数据模型和数据库之间的映射。
减少了编写的代码量,提高了开发效率。
提供了强大的LINQ查询支持。
学习曲线相对较陡,需要理解ORM的工作原理。
在某些情况下,性能可能不如直接使用ADO.NET。
当项目需要快速开发且数据模型相对简单时。
当需要利用LINQ进行复杂查询时。
3. 使用Dapper
using System.Data.SqlClient;
using Dapper;
public class DatabaseOperations
{
private string connectionString = "your_connection_string";
public void InsertData(YourEntity entity)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
string query = "INSERT INTO YourTable (Column) VALUES (@Property)";
conn.Execute(query, entity);
}
}
public void UpdateData(YourEntity entity)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
string query = "UPDATE YourTable SET Column = @Property WHERE Id = @Id";
conn.Execute(query, entity);
}
}
public void DeleteData(int id)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
string query = "DELETE FROM YourTable WHERE Id = @Id";
conn.Execute(query, new { Id = id });
}
}
public List<YourEntity> GetData()
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
string query = "SELECT * FROM YourTable";
return conn.Query<YourEntity>(query).ToList();
}
}
}
性能优越,介于ADO.NET和Entity Framework Core之间。
简洁的API,易于使用。
支持原生SQL查询。
需要安装Dapper库。
相对于Entity Framework Core,缺少了一些高级特性。
当需要高性能且简洁的数据库操作时。
当需要执行原生SQL查询且不想使用Entity Framework Core时。
总结
往期精品推荐: