我正在使用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 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是一种不好的做法。手动重新附加它们是一件痛苦的事情,如果不这样做,您就无法将一个对象添加到另一个对象的容器属性中。