Breezejs,无法找到属性xxxxx

时间:2013-04-17 06:06:35

标签: model asp.net-web-api breeze

我出于某种原因使用我的$ select = Gallery / Categories查询(投影)时出现错误..错误我得到的是:

  

“无法在类型'System.Collections.Generic.ICollection`1 [Web.Core.Models.GalleryModel]'上找到属性'类别'。”

这是我目前的模特:

public class GalleryModel : BaseModel
{
    public ICollection<CategoryModel> Categories { get; set; }
}

BaseModel只有一些额外的属性,例如

public int Id { get; set; }
    public string Name { get; set; }
    public DateTime Updated { get; set; }

为什么它可能会抛出此错误的任何想法? 奇怪的是,如果我不添加我的投影,那么它似乎找到了属性并回应了完整的json。

提前致谢!

3 个答案:

答案 0 :(得分:0)

编辑:从v 1.3.1开始,Breeze现在支持继承。

Breeze尚不支持继承,但它在我们的路线图上。请在Breeze User Voice上投票赞成此功能,以表明您认为这很重要。我们非常重视这个场所,优先考虑我们接下来要添加的功能。

答案 1 :(得分:0)

我认为可以出于某些原因产生问题。根据我使用breeze与web API和实体框架的经验,我发现你必须以一种非常特殊的方式定义你的类,以便完成所有工作。我认为你问题的主要原因可能是:

public class GalleryModel : BaseModel
{
    public **virtual** ICollection<CategoryModel> Categories { get; set; }
}

你应该在关系的定义中使用虚拟。

我也建议你这样做:

public class CategoryModel : BaseModel
{
    public int CategoryId {get; set;}
    public virtual CategoryModel Category{ get; set; }
}

在这种情况下,内容不是问题,我已经实现了非常类似的东西,它对我有用。 breeze中不支持的容器是当你想根据鉴别器转换不同对象中的表时。

我希望这会对你有所帮助。

答案 2 :(得分:0)

我有类似的问题,“微风无法找到entityType xxx的属性xyz”。 我找到了两个解决方案:

1。)在你的datacontext(或entityManagerFactory ......等)中,删除行

breeze.NamingConvention.camelCase.setAsDefault();

或更好,

2.确保所有js都使用camelCase约定。