Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc asp mvc纯sql可能吗?_Asp.net Mvc - Fatal编程技术网

Asp.net mvc asp mvc纯sql可能吗?

Asp.net mvc asp mvc纯sql可能吗?,asp.net-mvc,Asp.net Mvc,有没有一种在ASP MVC上使用简单sql查询而不使用LINQ的方法 欢迎任何链接:)当然,您可以随时下拉使用常规ol':-) 也常用于简化原始sql和存储过程的执行。当然,您可以随时下拉使用常规的ol':-) 还常用于简化原始sql和存储过程的执行。当然,您可以将普通ADO.NET对象嵌入控制器的操作方法或自定义业务逻辑库中。举个例子警告:仅限演示代码。请勿尝试在生产场景中使用。 public ActionResult Index() { using(SqlConnection con

有没有一种在ASP MVC上使用简单sql查询而不使用LINQ的方法


欢迎任何链接:)

当然,您可以随时下拉使用常规ol':-)


也常用于简化原始sql和存储过程的执行。

当然,您可以随时下拉使用常规的ol':-)


还常用于简化原始sql和存储过程的执行。

当然,您可以将普通ADO.NET对象嵌入控制器的操作方法或自定义业务逻辑库中。举个例子警告:仅限演示代码。请勿尝试在生产场景中使用。

public ActionResult Index()
{
    using(SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["CNTax"].ConnectionString))
    {
        using(SqlCommand command = conn.CreateCommand())
        {
            command.CommandText = "select * from Names";
            command.CommandType = CommandType.Text;

            conn.Open();

            var table = new DataTable();
            table.load(command.ExecuteReader());

            return View("Index", table);
        }
    }
}

一个简单的代码片段,用于从数据库中选择所有名称,并返回将模型设置为DataTable的索引视图。

当然,您可以在控制器的操作方法或自定义业务逻辑库中嵌入普通ADO.NET对象。举个例子警告:仅限演示代码。请勿尝试在生产场景中使用。

public ActionResult Index()
{
    using(SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["CNTax"].ConnectionString))
    {
        using(SqlCommand command = conn.CreateCommand())
        {
            command.CommandText = "select * from Names";
            command.CommandType = CommandType.Text;

            conn.Open();

            var table = new DataTable();
            table.load(command.ExecuteReader());

            return View("Index", table);
        }
    }
}

一个简单的代码片段,用于从数据库中选择所有名称,并返回将模型设置为DataTable的索引视图。

当然可以。这与ASP.NET应用程序中通常使用的方法相同,正如这里的其他答案所示

…然而,我更喜欢使用工具来生成我的数据访问层。现在的一些首选是,和,甚至


我个人会选择nHibernate或LLBLGen Pro,这取决于您是否希望数据访问层由“域驱动设计”(nHibernate)或“数据驱动设计”(LLBLGen Pro)驱动,您当然可以。这与ASP.NET应用程序中通常使用的方法相同,正如这里的其他答案所示

…然而,我更喜欢使用工具来生成我的数据访问层。现在的一些首选是,和,甚至


我个人会选择nHibernate或LLBLGen Pro,这取决于您是否希望数据访问层由“域驱动设计”(nHibernate)或“数据驱动设计”(LLBLGen Pro)驱动。

基于@user102220的答案:


设置一个数据访问层(只是一个单独的类或一系列类),然后从控制器调用这些。根据需要应用ADO.NET

基于@user102220的答案:


设置一个数据访问层(只是一个单独的类或一系列类),然后从控制器调用这些。根据需要应用ADO.NET

如果您使用的是实体框架,则可以像下面这样使用SqlQuery:

using(var db = new DbContext())
{
var result = db.Database.SqlQuery<your object>("Your Query",params));
}
使用(var db=new DbContext())
{
var result=db.Database.SqlQuery(“您的查询”,params));
}
对象:预期的结果类型(对象或类类型)和


您的查询和参数:带有参数的sql命令您应该传递给查询或不传递给查询

如果您使用的是实体框架,您可以像这样使用SqlQuery:

using(var db = new DbContext())
{
var result = db.Database.SqlQuery<your object>("Your Query",params));
}
使用(var db=new DbContext())
{
var result=db.Database.SqlQuery(“您的查询”,params));
}
对象:预期的结果类型(对象或类类型)和

您的查询和参数:带有参数的sql命令应传递给查询或不传递给查询,请尝试以下解决方案:

var results = DynamicCall.DynamicListFromSql(_entities, "select * from users", null).ToList();


    public static IEnumerable<dynamic> DynamicListFromSql(this DbContext db, string Sql, Dictionary<string, object> Params)
    {
        using (var cmd = db.Database.Connection.CreateCommand())
        {
            cmd.CommandText = Sql;
            if (cmd.Connection.State != ConnectionState.Open) { cmd.Connection.Open(); }

            using (var dataReader = cmd.ExecuteReader())
            {
                while (dataReader.Read())
                {
                    var row = new ExpandoObject() as IDictionary<string, object>;
                    for (var fieldCount = 0; fieldCount < dataReader.FieldCount; fieldCount++)
                    {
                        row.Add(dataReader.GetName(fieldCount), dataReader[fieldCount]);
                    }
                    yield return row;
                }
            }
        }
    }
var results=DynamicCall.DynamicListFromSql(_entities,“select*from users”,null).ToList();
公共静态IEnumerable DynamicListFromSql(此DbContext数据库、字符串Sql、字典参数)
{
使用(var cmd=db.Database.Connection.CreateCommand())
{
cmd.CommandText=Sql;
如果(cmd.Connection.State!=ConnectionState.Open){cmd.Connection.Open();}
使用(var dataReader=cmd.ExecuteReader())
{
while(dataReader.Read())
{
var row=作为IDictionary的新ExpandooObject();
对于(var fieldCount=0;fieldCount
尝试以下解决方案:

var results = DynamicCall.DynamicListFromSql(_entities, "select * from users", null).ToList();


    public static IEnumerable<dynamic> DynamicListFromSql(this DbContext db, string Sql, Dictionary<string, object> Params)
    {
        using (var cmd = db.Database.Connection.CreateCommand())
        {
            cmd.CommandText = Sql;
            if (cmd.Connection.State != ConnectionState.Open) { cmd.Connection.Open(); }

            using (var dataReader = cmd.ExecuteReader())
            {
                while (dataReader.Read())
                {
                    var row = new ExpandoObject() as IDictionary<string, object>;
                    for (var fieldCount = 0; fieldCount < dataReader.FieldCount; fieldCount++)
                    {
                        row.Add(dataReader.GetName(fieldCount), dataReader[fieldCount]);
                    }
                    yield return row;
                }
            }
        }
    }
var results=DynamicCall.DynamicListFromSql(_entities,“select*from users”,null).ToList();
公共静态IEnumerable DynamicListFromSql(此DbContext数据库、字符串Sql、字典参数)
{
使用(var cmd=db.Database.Connection.CreateCommand())
{
cmd.CommandText=Sql;
如果(cmd.Connection.State!=ConnectionState.Open){cmd.Connection.Open();}
使用(var dataReader=cmd.ExecuteReader())
{
while(dataReader.Read())
{
var row=作为IDictionary的新ExpandooObject();
对于(var fieldCount=0;fieldCount
不要这样做。让您的控制器保持轻松,并创建一个数据访问层。您肯定不想将此添加到控制器中…只是为了演示和简洁。不要演示错误的做法-人们会遵循它。@John-我添加了一个愉快的警告,应该可以避开所有潜在用户。不要这样做。保持控制器的亮度,并创建一个数据访问层。为了演示和简洁起见,您肯定不想将其添加到控制器中。不要演示不好的做法-人们会遵循它。@John-我添加了一个令人愉快的警告,应该可以避开所有潜在用户。您好,欢迎使用堆栈溢出。当回答一个已经有很多答案的问题时,请务必补充一些额外的见解,以了解为什么您提供的回答是实质性的,而不是简单地重复您的回答