Shr*_*ppa 6 c# linq entity-framework
我需要编写一个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)
哪个再次无效..
有人帮我这样做.我一直在努力...建议非常感谢.
Wah*_*tar -1
您可以从 dbcontext 执行 sql 查询:
using (var ctx = new DBEntities())
{
var itemsCount = ctx.Database.SqlQuery<int>("select count(id) from "+TableName+" where "+keyColumnName+" = "+ValueToCheck+").FirstOrDefault<int>();
}
Run Code Online (Sandbox Code Playgroud)