【发布时间】:2017-12-06 05:27:08
【问题描述】:
以下是幕后的一些东西。
public class User : BaseTransactionModel
{
public Guid UserId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Transaction
{
public int TransactionId { get; set; }
public string TransactionName { get; set; }
public int TransactionHistoryId { get; set; }
public virtual TransactionHistory TransactionHistory { get; set; }
}
public class TransactionHistory
{
public int TransactionHistoryId { get; set; }
public DateTime CreatedDateTime { get; set; }
public Guid UserId { get; set; }
public int TransactionId { get; set; }
public virtual ICollection<User> Users { get; set; }
public virtual ICollection<Transaction> Transactions { get; set; }
}
public class BaseTransactionModel
{
public int TransactionHistoryId { get; set; }
public int TransactionId { get; set; }
public virtual TransactionHistory TransactionHistory { get; set; }
public virtual Transaction Transaction { get; set; }
}
对于上述实体,我试图在指定日期从 User 获取所有 Transactions。
所以我尝试在 Transaction DbSet 中同时包含 User 和 TransactionHistory:
Context.Transaction
.Include(t => t.User)
.Include(t => t.TransactionHistory)
...
我想添加一个 where 子句,从交易历史实体中的日期过滤交易:
Context.Transaction
.Include(t => t.User)
.Include(t => t.TransactionHistory)
.Where(t => t.TransactionHistory.CreatedDateTime <= StartDateFilter && t.TransactionHistory.CreatedDateTime >= EndDateFilter)
但不能这样做。因为 TransactionHistory 也是一个实体列表(或其他任何名称)。
获得我想要实现的目标的可能解决方案是什么?
PS:我是 EF 的新手,标题可能会产生误导。如果是这样,请随时更新。
【问题讨论】:
-
你的模型类看起来不像他们应该的那样。尝试研究,应如何在类中定义关系(使用导航属性)。
-
@Nikolaus 我对上面的示例课程表示不满。感谢您的建议,我一定会看看它。
标签: c# entity-framework entity-framework-6 ef-code-first