【发布时间】:2015-01-27 18:24:05
【问题描述】:
我遇到了一个问题:
EntityFramework.dll 中出现“System.ArgumentException”类型的异常,但未在用户代码中处理
附加信息:包含路径表达式必须引用在类型上定义的导航属性。对引用导航属性使用虚线路径,对集合导航属性使用 Select 运算符。
我该如何解决?
这个问题发生在FindAll方法中
articleViewModel.AttachmentFiles = AttachmentFileBLL.Instance.FindAll(c => c.ArticleId == articleViewModel.Id).ToList();
FindAll 方法:
public virtual IQueryable<TModel> FindAll(params Expression<Func<TModel, object>>[] includeProperties)
{
IQueryable<TModel> items = RepositoryContainer<TRepository>().FindAll();
if (includeProperties != null)
{
foreach (var includeProperty in includeProperties)
{
items = items.Include(includeProperty); // Problem occurred here!
}
}
return items;
}
public virtual int? ArticleId { get; set; }
public virtual int Id { get; set; }
【问题讨论】:
-
您传入的“c => c.ArticleId == articleViewModel.Id”是否表示包含路径?
-
但是“c => c.ArticleId == articleViewModel.Id”是参数 Expression
>[] includeProperties 的正确类型。我发现你的方法很有趣,我自己也没想过。
标签: c# linq entity-framework lambda