繁体   English   中英

如何在不使用EF的情况下连接ASP.NET Core Web API中的数据库?

[英]How do I connect to database in ASP.NET Core Web API without using EF?

我试图在不使用EF Core的情况下创建ASP.NET Core Web API。 相反,我想使用System.Data.SQLClient连接到SQL服务器,并使用普通的旧SQL进行查询。 也就是说,我在确定如何建立连接方面遇到了一些麻烦。 我在网上找到了很多关于如何用EF来解决这个问题的教程。 但是,如果没有它,我有点感到困惑。

您可以使用与任何.net应用程序完全相同的方式执行此操作:

using (var conn = new System.Data.SqlClient.SqlConnection(connectionString)) {
    conn.Open();
    using (var cmd = conn.CreateCommand()) {
        cmd.CommandText = "SELECT 'hello world'";
        using (var reader = cmd.ExecuteReader()) {
            while (reader.Read()) {
                ...
            }
        }
    }
}

您会发现asp.net核心的某些部分需要EF,例如身份声明内容,因此您需要处理自己的身份验证,并且无法使用其安全属性等。 我已经在几个asp.net核心项目上走了这条路,没有遗憾

您必须使用SqlConnection和SqlCommand类。 文档中

private static void CreateCommand(string queryString, string connectionString)
{
    using (SqlConnection connection = new SqlConnection(
           connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        command.Connection.Open();
        command.ExecuteNonQuery();
    }
}

CreateCommand("insert into...", "[your connection string]");

另外, Dapper是访问数据的好选择,是扩展IDbConnection的对象映射器,因此您不必担心对象创建。 来自小巧玲珑的文件

public class Dog
{
    public int? Age { get; set; }
    public Guid Id { get; set; }
    public string Name { get; set; }
    public float? Weight { get; set; }

    public int IgnoredProperty { get { return 1; } }
}            

var guid = Guid.NewGuid();
var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM