具有不包括链接实体的实体的存储库

时间:2014-08-11 08:58:30

标签: c# entity-framework repository-pattern repository-design

我正在尝试以下方法。 我有一个存储库,返回存款列表。 我还想获得与存款实体相关的实体(即合同)

我没有完成它。 任何人都可以帮助我吗?

这是我的存储库:

public class DepositRepository : Repository<Deposit, int>, IDepositRepository
{
    public DepositRepository(IComPostSession session) : base(session) { }

    public Deposit GetById(int id)
    {
        return this.Query.SingleOrDefault(deposit => deposit.Id == id);
    }

    public IEnumerable<Deposit> GetAllOpenDeposits()
    {
        IEnumerable<Deposit> deposits = this.Query.ToList();

        return deposits;
    }
}

我的存款实体如下:

public class Deposit : IEntity<int>
{
    public int Id { get; set; }
    //public string Name { get; set; }
    public DateTime DepositDate { get; set; }
    public int EnvelopeTypeCarrierClassificationId { get; set; }
    public int CarrierCustomerContractVersionId { get; set; }

    public EnvelopeTypeCarrierClassification EnvelopeTypeCarrierClassificiation { get; set; }
    public CarrierCustomerContractVersion CarrierCustomerContractVerision { get; set; }
}

所以当我得到存款清单时,我也想要链接的EnvelopeTypeCarrierClassification和链接的CarrierCustomerContractVersion

2 个答案:

答案 0 :(得分:2)

Include会帮助你。

GetById更改为

public Deposit GetById(int id)
{
    return this.Query
               .Include(p => p.EnvelopeTypeCarrierClassificiation)
               .Include(p => p.CarrierCustomerContractVersion)
               .SingleOrDefault(deposit => deposit.Id == id);
}

答案 1 :(得分:0)

有可能性。在您的DataContext中启用 LazyLoading ,它会根据需要加载您的链接对象,或者如果您想自己执行,您必须使用Include(),如果您使用的是EntityCollection。

示例

myDataContext.MyObjectEntities.Include("MyLinkedEntity").ToList();

ObjectQuery.Include