Roslynpad - 连接到 SQL 数据库,为 EF、Dapper 和 Ado.Net 添加 nuget 包

问题描述 投票:0回答:1

如何使用 Roslynpad 通过 Ado.Net、Dapper 和 Entity Framework 连接到 SQL Server?

c# entity-framework-core ado.net dapper roslynpad
1个回答
0
投票

这个 片段应该可以帮助您连接到数据库。

将包添加到roslynpad

您可以通过在查询中间的文本框中输入名称并手动添加 using 语句来添加包

这就是结果

#r "nuget: Microsoft.Data.SqlClient, 5.1.1"
using Microsoft.Data.SqlClient;

更改连接字符串

conStr
并使用您的数据库服务器、数据库名称、用户名和密码。

string conStr =  @"Data Source=<dbSrv>;Initial Catalog=<dbname>;"; // only splitted 
conStr += conStr + "Integrated Security=False;"; // to 
conStr += conStr + "TrustServerCertificate=true;"; // avoid
conStr += conStr + "User id=<user>;Password=<pass>"; // a scrollbar

Ado.Net 和 Roslynpad

然后你就可以连接到你的数据库了

#r "nuget: Microsoft.Data.SqlClient, 5.1.1"
using Microsoft.Data.SqlClient;

string conStr = "<your-string-goes-here>";


var p = new List<Product>();  // list to store the results from the sql query
            
string sqlQuery =  "SELECT ID as Id, ProductName FROM dbo.Products;";
using (SqlConnection connection = new SqlConnection(conStr))
{
    SqlCommand command = new SqlCommand(sqlQuery, connection);
    connection.Open();
    using (SqlDataReader reader = command.ExecuteReader())
    {
       while (reader.Read())
       {              
         // add result row to list
         p.Add(new Product{Id= (int)reader[0] , ProductName =(string)reader[1]});
       }
    }

}
// show list content
p.Dump();


public class Product
{
    public int Id{ get; set; }
    public string ProductName { get; set; }        
};

Roslynpad 内衣冠楚楚

使用 获取记录可以通过此代码完成

#r "nuget: Microsoft.Data.SqlClient, 5.1.1"
#r "nuget: System.Data.Common, 4.3.0"
#r "nuget: Dapper, 2.0.151"

using System.Data;
using Microsoft.Data.SqlClient;
using Dapper;

string conStr = "<yourConnectionString>";

string sqlQuery =  "SELECT ID as Id, ProductName FROM dbo.Products;";

Product product;
IEnumerable<Product> products;
using (IDbConnection  connection = new SqlConnection(conStr))
{
   products = connection.Query<Product>(sqlQuery);       
}
products.Dump();
product = products.FirstOrDefault<Product>();
product.Dump();

public class Product
{
    public int Id{ get; set; }
    public string ProductName { get; set; }        
};

在 Roslynpad 中使用实体框架

下面的代码显示了如何设置与数据库的连接并在类成员和表中的不同列名称之间创建映射

查询开始

#r "nuget: Microsoft.Data.SqlClient, 5.1.1"
#r "nuget: Microsoft.EntityFrameworkCore, 7.0.11"
#r "nuget: Microsoft.EntityFrameworkCore.SqlServer, 7.0.11"

using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.SqlServer;
using System;
using System.Collections.Generic;
using System.Diagnostics;
 
 static class Program {
    [STAThread]
    static void Main() {
      ApplicationDbContext context = new ApplicationDbContext();
      var models = context.Models.ToList();
      models.Dump();
    }
 }

Program.Main
之后,您还必须添加此代码

代码中的实体

public sealed class CsModel
{    
    public decimal ModelId { get; set; }
    public string Name { get; set; }
    public double? Price { get; set; }
}

ApplicationDbContext 类

public  class ApplicationDbContext : DbContext
{
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        string cnn = @"<your-connection>";
        optionsBuilder.UseSqlServer(cnn);
    }
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
         // ... see below
    }    
    //entities
    public DbSet<CsModel> Models { get; set; }    
}

OnModelCreating 内部的映射


    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<CsModel>(entity =>
        {
            entity.HasKey(e => e.ModelId)
                .HasName("PK__CS_MODEL__1E");

            entity.ToTable("CS_MODEL", "dbo");

            entity.Property(e => e.ModelId)
                .HasColumnType("numeric(19, 0)")
                .ValueGeneratedOnAdd()
                .HasColumnName("MODEL_ID");

            entity.Property(e => e.Name)
                .HasMaxLength(255)
                .IsUnicode(false)
                .HasColumnName("NAME");

            entity.Property(e => e.Price).HasColumnName("PRICE");
        });
© www.soinside.com 2019 - 2024. All rights reserved.