Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ到SQL相当于ADO.NET EF';s GetObjectByKey_C#_.net_Linq_Linq To Sql_Entity Framework - Fatal编程技术网

C# LINQ到SQL相当于ADO.NET EF';s GetObjectByKey

C# LINQ到SQL相当于ADO.NET EF';s GetObjectByKey,c#,.net,linq,linq-to-sql,entity-framework,C#,.net,Linq,Linq To Sql,Entity Framework,我写了一些管道,通过它的标识符来获取一个对象。在幕后,它使用GetObjectByKey或TryGetObjectByKey通过其EntityKey获取对象,EntityKey可以构造。LINQtoSQL是否具有与此等效的功能 谢谢。以下是我一直在使用的: public virtual TEntity GetById(int id) { var table = DataContext.GetTable<TEntity>(); var mapping = DataCon

我写了一些管道,通过它的标识符来获取一个对象。在幕后,它使用GetObjectByKey或TryGetObjectByKey通过其EntityKey获取对象,EntityKey可以构造。LINQtoSQL是否具有与此等效的功能


谢谢。

以下是我一直在使用的:

public virtual TEntity GetById(int id)
{
    var table = DataContext.GetTable<TEntity>();
    var mapping = DataContext.Mapping.GetTable(typeof(TEntity));
    var idProperty = mapping.RowType.DataMembers.SingleOrDefault(d => d.IsPrimaryKey);
    var param = Expression.Parameter(typeof(TEntity), "e");
    var predicate = Expression.Lambda<Func<TEntity, bool>>(Expression.Equal(
        Expression.Property(param, idProperty.Name), Expression.Constant(id)), param);
    return table.SingleOrDefault(predicate);
}
public class Repository<TDataContext, TEntity> : IDisposable
    where TDataContext : DataContext
    where TEntity : class
{
    protected TDataContext DataContext { get; private set; }

    public Repository(TDataContext dataContext)
    {
        DataContext = dataContext;
    }

    ...
}