繁体   English   中英

LINQ-to-SQL等同于ADO.NET EF的GetObjectByKey

[英]LINQ-to-SQL equivalent to ADO.NET EF's GetObjectByKey

我写了一些通过标识符来获取对象的管道。 在后台,它使用GetObjectByKey或TryGetObjectByKey通过可以构造的EntityKey来获取对象。 LINQ to SQL是否有与此相同的东西?

谢谢。

这是我一直在使用的:

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

    ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM