0

我在规范化数据库上使用 EF。

对于我的 Offers 实体,我有以下表结构:

优惠

加上:

邮政类型

Offers_SitePost 或 Offers_CommunityPost

加上:

报价类型

Offers_VoucherCode or Offers_Deal or Offers_Sale

因此,完整的报价将由 Offers 中的明确条目加上 PostType 表之一中的条目和 OfferType 表之一中的条目组成。

我从 offer 表中知道,其他哪些表应该包含数据。我正在使用 IsSitePost 之类的属性来执行此操作。

我正在尝试找出获取必要数据的最佳方法,包括单个报价和报价列表。显然我可以包括所有表格,但我怀疑这是否会是最有效的。

这是我正在为单一报价处理的代码:

    public static Offer GetById2(int ID)
    {
        ID.ThrowDefault("ID");

        var r = new CrudRepo<Offer>(Local.Items.Uow.Context);

        var offer = r.Find(o => o.OfferId == ID);

        // if is site post Include("SiteOffers")
        // else is community post Include("CommunityOffers") etc

        return offer.SingleOrDefault();
    }

任何人都可以就实现这一目标的最佳方式提供建议吗?

4

2 回答 2

1

我建议您向 DB 查询您正在寻找的报价

看这个话题: Entity Framework 4: Selecting Single Record

于 2012-10-09T10:29:18.533 回答
0

您需要将 .Include 放在查找之前,因为 include 扩展了基础表源,而不是对象类型。这还取决于您如何实现 CrudRepo 以及它返回的内容以了解您的存储库是否知道如何处理 Include 本身。

public static Offer GetById2(int ID)
 {
     ID.ThrowDefault("ID");
      var r = new CrudRepo<Offer>(Local.Items.Uow.Context);
      if (IsSitePost)
         r = r.Include("SiteOffers");
      else
         r = r.Include("CommunityOffers");
      var offer = r.Find(o => o.OfferId == ID);
      return offer.SingleOrDefault();
 } 
于 2012-10-09T14:13:53.807 回答