You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 16:53:19