我有一个类是从 DataContext 继承来使用 Linq。
public class Context : DataContext
{
public Context(string connectionString)
: base(connectionString)
{
}
}
[Table(Name = "TableNameee")]
public class ClassOfTable
{
}
我还有另一个映射到表的类。 我正在使用
context.GetTable<ClassOfTable>()
检索映射到 ClassOfTable 类的表的所有行的方法。但我只想从数据库表中检索一行。 我可以这样使用它:
ClassOfTable cls = context.GetTable<ClassOfTable>().Where(p=>p.id==1).First();
但这将检索表的每一行。我不想这样做。我应该怎么做才能只从表中取出一行?
最佳答案
它不会获取表的所有行,它只会通过 SQL 中的 where 语句获取第 1 行。请记住,Linq 是一个 deffered execution model , GetTable<T>
实际上不运行任何东西,只有当 .First()
runs 是任何东西。
我们将此方法添加到我们的 DataContext 中以经常执行此操作,这里是扩展形式:
public static T GetById<T>(this DataContext dc, long id) where T : class, IBaseEntity
{
return dc.GetTable<T>().Single(t => t.Id == id);
}
为此目的,我们在每个类上的接口(interface)可以非常小:
public interface IBaseEntity
{
long Id { get; set; }
}
关于c# - 通过在 DataContext 上使用 GetTable 方法检索一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2188056/