ASP.NET MVC3:访问数据库并获取几行的最快方法是什么?

时间:2011-11-15 16:28:51

标签: asp.net asp.net-mvc database

目前我正在使用DLL库来获取自定义对象列表。

这一切都很棒,因为能够在其他项目中使用它。

但是我想要一个下拉框,它是一个DB表的查找,有3个选项,(高,中,低),这不是唯一一个问题。

获取此类信息有什么简短方法吗?

在ROR中,您可以将SQL字符串调用到数据库并获取列表,只需一行代码.....

所以我想像:

var mylist = sqldb.query("SELECT * FROM Priority");

注意:是的,以上内容完全弥补了。

理想情况下,我不需要设置任何模型......理想情况下也不必附加数据库,而是使用查询字符串 - 除非附加更容易,并且可以从配置文件中进行自定义。

更新 下面是一个例子,我现在讨论以下内容,但它说System.ArgumentException: Keyword not supported: 'initial catalog'.

    using (var db = Database.OpenConnectionString(WebLite.Properties.Settings.Default.dbConnString))
    {
        var items = db.Query("SELECT * FROM TaskPriority");
    }

我的连接字符串:Data Source=MYPC\WEB;Initial Catalog=WEBSQL;User ID=sa;Password=password;

5 个答案:

答案 0 :(得分:1)

您可以使用WebMatrix.Data中的Database class

var items = Database.Open(...).Query("SELECT * FROM Priority");

但是,从长远来看,使用Entity Framework将更易于维护。

答案 1 :(得分:1)

如果要访问数据库表以获取几行,您可以选择以下几种方法:

  • Linq to Sql
  • 实体框架
  • DataSets / TableAdapter
  • 使用您自己的连接/命令的原始SQL。

我认为最后一个选项最容易。您的代码看起来像这样:

 string queryString = 
        "SELECT OrderID, CustomerID FROM dbo.Orders;";
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        SqlCommand command = new SqlCommand(
            queryString, connection);
        connection.Open();
        SqlDataReader reader = command.ExecuteReader();
        try
        {
            while (reader.Read())
            {
                Console.WriteLine(String.Format("{0}, {1}",
                    reader[0], reader[1]));
            }
        }
        finally
        {
            // Always call Close when done reading.
            reader.Close();
        }
    }

将数据库的连接字符串定义并传入。然后构建sql查询,打开连接,构建命令,然后通过返回的行读取。

答案 2 :(得分:1)

最快的解决方案:

  1. 创建一个新的LINQ to SQL模型(并打开它)。
  2. 拖动模型上的Priority表(并保存)。
  3. 像这样查询模型:(new MyDataContext()).Priorities

答案 3 :(得分:1)

Microsoft Enterprise Library具有“数据访问应用程序块”,可以非常轻松地连接数据。这些信息可以在http://msdn.microsoft.com/en-us/library/ff664408(v=PandP.50).aspx

找到

您可以使用此代码(来自http://www.4guysfromrolla.com/articles/070203-1.aspx

创建连接并获取数据
string strSql = "select * from products where categoryid = 1";
string strConnTxt = "Server=(local);Database=Northwind;Integrated Security=True;";

DataGrid4.DataSource = SqlHelper.ExecuteReader(strConnTxt, CommandType.Text, strSql);
DataGrid4.DataBind();

答案 4 :(得分:1)

您可以使用最接近您所寻找的NHibernateDapper个声音。 从他们的示例页面中被盗:

   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 });

dog.Count()
    .IsEqualTo(1);

dog.First().Age
    .IsNull();

dog.First().Id
    .IsEqualTo(guid);