小编Shr*_*ppa的帖子

通过将Tablename,ColumnName和value作为参数传递来实体的动态Linq SearchFor

我需要编写一个IsExists(string TableName,string KeyColumnName,string ValueToCheck)在DAL中调用的函数,它检查数据是否存在于特定的表和我传递的特定列中

基本上我想在我尝试使用sql查询时实现类似的功能

select count(id) from "+TableName+" where "+keyColumnName+"="+ValueToCheck+";
Run Code Online (Sandbox Code Playgroud)

但我不能使用SQL查询..

在我的解决方案中,我有一个.edmx文件,一个实体类以及一个存储库类,它具有以下SearchFor方法:

public class EntityRepository<C, TEntity> : IEntityRepository<TEntity>
        where TEntity : class
        where C : DbContext
{
    public IQueryable<TEntity> SearchFor(System.Linq.Expressions.Expression<Func<TEntity, bool>> predicate)
    {
        return _entities.Set<TEntity>().Where(predicate);
    }
}
Run Code Online (Sandbox Code Playgroud)

我试过这样的事情

public bool CheckIsExists<T>(string keyColumnName, string valueToCheck) where T : class
{
    bool isExist = false;

    using (var repository = ContextFactory.CreateEmployeeMasterRepository())
    {
        var repo = repository.GetEntityRepository<T>();
        object obj = (T)Activator.CreateInstance(type);
        repo.SearchFor(u => u.GetType().GetProperty(keyColumnName).GetValue(obj).ToString() == valueToCheck);
    }
    return isExist; …
Run Code Online (Sandbox Code Playgroud)

c# linq entity-framework

6
推荐指数
1
解决办法
729
查看次数

标签 统计

c# ×1

entity-framework ×1

linq ×1