2010-11-21 12 views
0

私は、その識別子でオブジェクトを取得するための配管を書いています。その背後では、GetObjectByKeyまたはTryGetObjectByKeyを使用して、EntityKeyによってオブジェクトを取得します。このオブジェクトは構築できます。 LINQ to SQLにはこれと同等の機能がありますか?ADO.NET EFのGetObjectByKeyに相当するLINQ-to-SQL

ありがとうございました。

答えて

2

ここで私が使用してきたものだ:

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); 
} 

私はこのようになりますジェネリックRepositoryクラス内、このメソッドを使用しています:

public class Repository<TDataContext, TEntity> : IDisposable 
    where TDataContext : DataContext 
    where TEntity : class 
{ 
    protected TDataContext DataContext { get; private set; } 

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

    ... 
} 
関連する問題