【发布时间】:2015-02-07 19:08:24
【问题描述】:
这是我模型的一部分:
public class Transaction
{
public int Id { get; set; }
public Decimal Amount { get; set; }
public DateTime Date { get; set; }
public string Comment { get; set; }
public Subcategory TransactionSubcategory { get; set; }
public Member OwnerMember { get; set; }
public int TransactionSubcategoryId { get; set; }
public int OwnerMemberId { get; set; }
}
public class Subcategory
{
public Subcategory()
{
IsGlobal = false;
Transactions = new List<Transaction>();
}
public int Id { get; set; }
public string Name { get; set; }
public Category OwnerCategory { get; set; }
public List<Transaction> Transactions { get; set; }
public bool IsGlobal { get; set; }
}
public class Category
{
public Category()
{
IsGlobal = false;
}
public int Id { get; set; }
public string Name { get; set; }
public List<Subcategory> Subcategories { get; set; }
public TransactionType TypeOfTransaction { get; set; }
public Budget OwnerBudget { get; set; }
public bool IsGlobal { get; set; }
}
public class Member
{
public Member()
{
Transactions = new List<Transaction>();
}
public Budget OwnerBudget { get; set; }
public int Id { get; set; }
public string Name { get; set; }
public DateTime CreatedTime { get; set; }
public List<Transaction> Transactions { get; set; }
}
在这个方法中我尝试包含TransactionSubcategory.OwnerCategory
private List<ReportMembers> GetMembersReport(IQueryable<Transaction> transactions)
{
var members = transactions
.Include(t=> t.TransactionSubcategory.OwnerCategory)
.GroupBy(t => t.OwnerMember, t => t)
.ToList();
...
}
但它仍然为空。如果我改成
var members = transactions
.GroupBy(t => t.OwnerMember, t => t)
.Include(t=> t.Select(t2 => t2.TransactionSubcategory.OwnerCategory))
.ToList();
我遇到了错误:
EntityFramework.dll 中出现“System.ArgumentException”类型的异常,但未在用户代码中处理
附加信息:包含路径表达式必须引用在类型上定义的导航属性。对引用导航属性使用虚线路径,对集合导航属性使用 Select 运算符。
【问题讨论】:
-
.Include("TransactionSubcategory").Include("TransactionSubcategory.OwnerCategory")工作吗? -
您是否将该字段定义为外键?
-
1) 不,它不起作用 2) 我没有为模型添加任何属性,但我找到了解决方案
标签: c# linq entity-framework