【发布时间】:2010-07-14 23:13:41
【问题描述】:
我正在尝试创建一个通用方法以在我的存储库的基类中使用,但我遇到了问题。方法是这样的……
public virtual T First(System.Linq.Expressions.Expression<Func<T, bool>> where, List<string> properties)
{
IQueryable<T> query = null;
if (where != null)
{
query = _context.CreateQuery<T>(String.Format("[{0}]", typeof(T).Name.ToString())).Where(where);
}
else
{
query = _context.CreateQuery<T>(String.Format("[{0}]", typeof(T).Name.ToString()));
}
foreach (string s in properties)
{
query = query.Include(s);
}
T _result = (T)query.First();
return _result;
}
当我运行代码时,它给了我这个错误:
“公司”无法在 当前范围或上下文。制作 确保所有引用的变量都是 在范围内,所需的模式是 加载,并且命名空间是 正确引用。差点逃脱 标识符,第 1 行,第 1 列。
我知道为什么会这样,只是不知道如何解决。我认为这样做是因为我的 ObjectContext 不知道对象“Company”,但它确实知道“Companies”。有关如何解决此问题的任何想法?
错误发生在这一行:
T _result = (T)query.First();
谢谢!
【问题讨论】:
-
通常实体集名称是复数的,这就是上下文知道公司的原因。您使用的是哪个版本的 EF?
-
我使用的是版本 4。是的,我猜这就是它无法正常工作的原因......但是有没有办法让它工作?
-
使用
FirstOrDefault而不是First,以防查询返回无结果。
标签: c# .net entity-framework