1

由于某种原因,我在使用 $select=Gallery/Categories 查询(投影)时不断收到错误。我得到的错误是:

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

这是我目前的模型:

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 响应。

提前致谢!

4

3 回答 3

0

我认为这个问题可能由于某些原因而产生。根据我在 Web API 和实体框架中使用微风的经验,我发现您必须以非常具体的方式定义您的类才能正常工作。而且我认为您的问题的主要原因可能是:

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

您应该在关系的定义中使用 virtual 。

我还建议你这样做:

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

在这种情况下,继承不是问题,我已经实现了一些非常相似的东西,它对我有用。微风不支持的intherance是当您想根据鉴别器转换不同对象中的表格时。

我希望这能帮到您。

于 2013-04-20T09:04:14.637 回答
0

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

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

于 2013-04-17T07:20:26.167 回答
0

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

1.)在您的数据上下文(或 entityManagerFactory .. 不管)中,删除该行

breeze.NamingConvention.camelCase.setAsDefault();

或更好,

2.) 确保您的所有 js 都使用驼峰式约定。

于 2014-09-10T10:26:48.430 回答