【问题标题】:Breeze Sharp - Expand not working with lambda expressionBreeze Sharp - 扩展不适用于 lambda 表达式
【发布时间】:2015-01-15 15:06:45
【问题描述】:

当我尝试像这样通过 lambda 扩展导航属性时:

query = query.Expand(x => x.Dealers);

我的查询失败了

内部异常

内部异常消息:

表达式“x => x.Dealers”不是导航路径的有效表达式。 lambda 表达式主体内唯一支持的操作是 MemberAccess 和 TypeAs。表达式必须至少包含一个 MemberAccess,并且不能以 TypeAs 结尾。

然而,当我尝试通过字符串参数进行扩展时:

query = query.Expand("Dealers");

一切似乎都正常工作。

我的“区域”Breeze 客户端实体:

public class Region : BaseEntity
{
    public Region();

    public NavigationSet<Dealership> Dealers { get; set; }
    public string Name { get; set; }
    public Region Parent { get; set; }
    public int? ParentId { get; set; }
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Key]
    public int RegionId { get; set; }
    public string ShortName { get; set; }
    public RegionType Type { get; set; }
}

我的经销商导航实体:

public class Dealership : BaseEntity
{
    public Dealership();

    public DateTime ActiveFrom { get; set; }
    public DateTime? ActiveTo { get; set; }
    public Brand Brand { get; set; }
    [ForeignKey("Brand")]
    public int BrandId { get; set; }
    public string DealerCode { get; set; }
    public DealerGroup DealerGroup { get; set; }
    [ForeignKey("DealerGroup")]
    public int? DealerGroupId { get; set; }
    public virtual NavigationSet<DealerIR> DealerIRs { get; set; }
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Key]
    public int DealershipId { get; set; }
    public bool IsActive { get; set; }
    public string Line1 { get; set; }
    public string Line2 { get; set; }
    public string Line3 { get; set; }
    public string Line4 { get; set; }
    public string Line5 { get; set; }
    public string Name { get; set; }
    public string PostCode { get; set; }
    public Region Region { get; set; }
    [ForeignKey("Region")]
    public int RegionId { get; set; }
}

我最近的尝试是通过“ForeignKey”数据注释使外键关系显式化,但产生的错误仍然是一样的。

我使用的是微风锐利 v0.6.0.3。

更新 1: 这不是与上面完全相同的查询,而是相同的结果。只是我一直在逐步完成的 Breeze.Sharp 源代码的屏幕截图。大图here

【问题讨论】:

  • 原始查询是什么样的?即您的示例中的“查询”
  • 嗨 Jay,原始查询是:EntityQuery query = new EntityQuery();稍微不同的是,我解决了另一个扩展问题,因为我没有在客户端 Breeze 实体上将“许多”导航属性设置为“NavigationSet”(它们只是 List) .我正在整个对象图中纠正这一点。会不会有关系?
  • 我已将所有导航属性更改为 NavigationSet... 仍然没有骰子。将在失败的地方使用 Breeze.Sharp 代码片更新 OP...也许它会有所帮助..
  • 我会尝试重现这个,但我可能要到下周才能完成......
  • 它仍在积极开发中,但最近我们一直专注于我们的服务器故事。即除了我们的 .NET 之外的新节点和 Java 服务器。但我们开始对 Breeze# 产生更多的兴趣,所以我可能会在几周后重新讨论它。那时,我将尝试编写一个文档来描述我们需要通过哪些测试才能接受拉取请求。在那之后,我很想得到任何帮助:)

标签: c# breeze breeze-sharp


【解决方案1】:

尝试如下

query = query.ToList().Expand(val => val.Dealers);

【讨论】:

  • 我不认为扩展扩展方法在 Linq2Objects 上可用?
  • 请在您的答案中添加解释。
【解决方案2】:
query = query.Include(val => val.Dealers);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    相关资源
    最近更新 更多