如何使用RoslynPad通过Ado.Net、Dapper及Entity Framework连接SQL Server?
在RoslynPad中使用ADO.NET、Dapper和Entity Framework连接SQL Server
1. ADO.NET
添加NuGet包
RoslynPad支持通过#r指令直接引用NuGet包或系统程序集。对于ADO.NET,你可以选择传统的System.Data.SqlClient或更新的Microsoft.Data.SqlClient:
// 引用系统自带的程序集(若已存在) #r "System.Data.SqlClient" // 或通过NuGet安装最新版 #r "nuget: Microsoft.Data.SqlClient"
输入后RoslynPad会自动下载并加载对应的包。
连接SQL Server的方法
ADO.NET是最基础的数据访问方式,步骤清晰直接:
using System.Data.SqlClient; // 或 using Microsoft.Data.SqlClient; // 替换为你的数据库连接信息 var connectionString = "Server=YOUR_SERVER_NAME;Database=YOUR_DB_NAME;User Id=YOUR_USER;Password=YOUR_PASSWORD;"; // using语句自动释放连接资源 using (var connection = new SqlConnection(connectionString)) { connection.Open(); // 执行查询命令 var queryCmd = new SqlCommand("SELECT Id, Name FROM YourTableName", connection); using (var reader = queryCmd.ExecuteReader()) { while (reader.Read()) { Console.WriteLine($"ID: {reader["Id"]}, Name: {reader["Name"]}"); } } // 执行增删改示例 var insertCmd = new SqlCommand("INSERT INTO YourTableName (Name) VALUES ('Test')", connection); var affectedRows = insertCmd.ExecuteNonQuery(); Console.WriteLine($"插入了 {affectedRows} 条数据"); }
核心逻辑:创建连接字符串→实例化连接对象→打开连接→执行SQL命令→处理结果→自动释放资源。
2. Dapper
添加NuGet包
Dapper是轻量级ORM,需要先引用它的NuGet包,同时依赖SQL客户端:
#r "nuget: Dapper" #r "nuget: Microsoft.Data.SqlClient"
连接SQL Server的方法
Dapper通过扩展方法简化ADO.NET操作,自动将查询结果映射到实体类:
using Dapper; using Microsoft.Data.SqlClient; // 定义与数据库表对应的实体类 public class YourEntity { public int Id { get; set; } public string Name { get; set; } } var connectionString = "Server=YOUR_SERVER_NAME;Database=YOUR_DB_NAME;User Id=YOUR_USER;Password=YOUR_PASSWORD;"; using (var connection = new SqlConnection(connectionString)) { connection.Open(); // 查询并映射到实体列表 var entities = connection.Query<YourEntity>("SELECT * FROM YourTableName").ToList(); foreach (var item in entities) { Console.WriteLine($"ID: {item.Id}, Name: {item.Name}"); } // 参数化插入(避免SQL注入) var newItem = new { Name = "Dapper Test" }; var insertedId = connection.ExecuteScalar<int>( "INSERT INTO YourTableName (Name) VALUES (@Name); SELECT SCOPE_IDENTITY();", newItem); Console.WriteLine($"插入的新数据ID: {insertedId}"); }
Dapper兼顾ADO.NET的性能和ORM的便捷性,适合简单到中等复杂度的数据操作。
3. Entity Framework Core
添加NuGet包
EF Core是完整的ORM框架,需要引用核心包和SQL Server提供者:
#r "nuget: Microsoft.EntityFrameworkCore" #r "nuget: Microsoft.EntityFrameworkCore.SqlServer"
连接SQL Server的方法
EF Core通过DbContext管理数据库连接和实体,支持LINQ查询、变更追踪等功能:
using Microsoft.EntityFrameworkCore; // 定义实体类 public class YourEntity { public int Id { get; set; } public string Name { get; set; } } // 定义DbContext,配置数据库连接 public class AppDbContext : DbContext { public DbSet<YourEntity> YourEntities { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("Server=YOUR_SERVER_NAME;Database=YOUR_DB_NAME;User Id=YOUR_USER;Password=YOUR_PASSWORD;"); } } // 使用DbContext操作数据库 using (var context = new AppDbContext()) { // LINQ查询 var entities = context.YourEntities.Where(e => e.Name.Contains("Test")).ToList(); foreach (var item in entities) { Console.WriteLine($"ID: {item.Id}, Name: {item.Name}"); } // 添加并保存实体 context.YourEntities.Add(new YourEntity { Name = "EF Core Test" }); context.SaveChanges(); Console.WriteLine("新数据已保存"); }
EF Core适合复杂业务场景,能减少重复SQL编写,同时提供迁移、事务管理等高级功能。
内容的提问来源于stack exchange,提问作者surfmuggle
相关产品推荐
相关产品推荐

