【发布时间】:2015-05-19 08:47:37
【问题描述】:
我需要在 DAL 中编写一个名为 IsExists(string TableName,string KeyColumnName,string ValueToCheck) 的函数,用于检查数据是否存在于特定表和我传递的特定列中
基本上,当我尝试使用 sql 查询时,我想实现这样的目标
select count(id) from "+TableName+" where "+keyColumnName+"="+ValueToCheck+";
但是我不能使用 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);
}
}
我试过这样的东西
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;
}
这又不起作用..
有人帮我做这件事。我已经尝试了很长时间.. 非常感谢您的建议。
【问题讨论】:
-
你应该检查我自己关于动态 LINQ 的问题:stackoverflow.com/questions/29234484/…
-
1) 好像你这里除了实体框架之外还有一个框架,我建议你先让它与已知类型/对象一起工作,然后再转向泛型。 2)首先在一个小型控制台项目中模拟这个没有数据库
标签: c# linq entity-framework