【问题标题】:Linq to SQL DataContext: how to load data?Linq to SQL DataContext:如何加载数据?
【发布时间】:2012-12-25 02:00:53
【问题描述】:

(我对 Linq to SQL 完全陌生)我正在创建一个与数据库密切合作的 Web 应用程序,我正在寻找最快且连接时间高效的模型,并相信 Linq to SQL 就是这样。我正在使用 C#/.Net4/Visual Studio 2010

为简单起见,我有一个包含许多 asp 文本框的 web .aspx 页面。我想通过 Linq 将 SQL 数据中的文本值提供给 SQL 对象。我还有一个名为 DataClasses.dbml 的文件,其中在设计视图中添加了一个表。到目前为止,我的网页代码隐藏中的代码是:

DataClassesDataContext db = new DataClassesDataContext(getConnectionString);

var table = from t in db.MyTable
            where t.PK == 2
            select new { t.col1, t.col2, t.col3};

db.Connection.Open();
db.  // What's the best way of loading the object?
db.Connection.Close();

然后如何访问列值?还是我将它数据绑定到数据表?如果有,怎么做?

myTextBox1.Text = table.???col1.value;

【问题讨论】:

  • 绝对没有必要过度使用大写字母——看起来好像你在大喊大叫,而大喊大叫通常被认为是粗鲁的。 =)

标签: c# asp.net linq-to-sql datacontext


【解决方案1】:

您无需打开或关闭连接。 LinqToSql 为您抽象了这些内容。

创建查询后,您可以执行它并使用SingleOrDefault() 将行作为对象检索。

using (var db = new DataClassesDataContext(getConnectionString))
{
    var query = from t in db.MyTable
                where t.PK == 2
                select new { t.col1, t.col2, t.col3};
    var myObject = query.SingleOrDefault();
}

您还可以使用 lambda 表示法来简化此操作:

using (var db = new DataClassesDataContext(getConnectionString))
{
    var myObject = db.MyTable.SingleOrDefault(t => t.PK == 2 )
}

要访问对象,您可以直接访问列,因为它们已映射到相应的属性:

myTextBox1.Text = myObject.col1;

【讨论】:

    【解决方案2】:

    常见的方法是调用将执行查询的方法(ToArray、ToList、First、Single 等)或在 foreach 中枚举它。

    例如:

    var query = from t in db.MyTable
                where t.PK == 2
                select new { t.col1, t.col2, t.col3};
    
    var result = query.ToArray(); // now it contains array of resulting objects
    
    // or enumerate
    foreach (var obj in query)
    {
        // do stuff with obj
    }
    

    【讨论】:

      【解决方案3】:

      使用

      myTextBox1.Text = table.FirstOrDefault().col1.ToString();
      

      【讨论】:

      • 请添加一些解释性文字,以使其成为有用的答案。
      猜你喜欢
      • 2012-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      • 1970-01-01
      • 2011-08-22
      相关资源
      最近更新 更多