从键中获取Linq对象

本文关键字:Linq 对象 获取 | 更新日期: 2023-09-27 17:49:40

我正在使用LINQ to SQL,我想知道是否有这种语法的捷径:

using (Model db = new Model())
{
    LinqObj l = db.LinqObj.Where(o => o.ID = id).Single();
}

我知道我可以创建一个静态方法返回一个LinqObj对象:

public static LinqObj FromID(int id)
{
    using (Model db = new Model())
    {
        return LinqObj l = db.LinqObj.Where(o => o.ID = id).Single();
    }
}

这让我思考;有没有办法创建一个返回对象的构造函数:

LinqObj l = new LinqObj(ID: 7);
在LINQ to SQL对象中创建单行对象的最佳方法是什么?

从键中获取Linq对象

您可以为LINQ to SQL样板文件提供一个实用程序方法:

static T GetObject<T>(Func<Model, T> func)
{
   using(var db = new Model()) return func(db); 
}

然后这样写:

var l = GetObject(db => db.LinqObj.Single(o => o.ID == id));

我认为最简单的事情是创建方法来帮助创建或检索您需要的数据,就像您的静态方法示例一样。您可以扩展您的类并在构造函数中放入逻辑来执行一些检索,但我不确定这是一种干净的方法。

怎么了

dataContext.LinqObjs.Single(x => x.Id = 23);

?它非常可读,而且它显然正确地重用了现有的DataContext。为获得的每个对象创建DataContext是一种不好的做法。手动重新附加它们是一件痛苦的事情,如果不这样做,您就无法将一个对象添加到另一个对象的容器属性中。