加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

entity-framework – Breeze扩展不使用EF的WebAPI

发布时间:2020-12-16 09:39:12 所属栏目:asp.Net 来源:网络整理
导读:我发布了一个WebAPI服务,它返回一个项目列表.我正在实施Breeze并且设法使它基本上与过滤/排序一起工作.但是,Expand不起作用. http://www.ftter.com/desktopmodules/framework/api/dare/dares?$expand=ToUser 您可以在上面的响应中看到ToUserId ForeignKey,但
我发布了一个WebAPI服务,它返回一个项目列表.我正在实施Breeze并且设法使它基本上与过滤/排序一起工作.但是,Expand不起作用.

http://www.ftter.com/desktopmodules/framework/api/dare/dares?$expand=ToUser

您可以在上面的响应中看到ToUserId ForeignKey,但ToUser属性为NULL(用户肯定存在)

您可以在元数据中看到ToUser EF导航属性.

当我在服务器端使用.Include时,我可以用EF填充它,但我不想这样做.

我在Expand:http://learn.breezejs.com/上查看了Breeze Tutorial 2
这是没有扩展:http://learn.breezejs.com/api/northwind/Products

这里是扩展(你可以看到附加的类别信息):http://learn.breezejs.com/api/northwind/Products?$expand=Category

这就是我想要做的但是我没有填写它……

更新:
我下载了Breeze 1.3.6 Samples并在VS2011中加载了DocCode解决方案.
我运行它,看到客户端扩展工作;
例如
http:// localhost:47595 / breeze / Northwind / Orders?$top = 1(不展开)
http:// localhost:47595 / breeze / Northwind / Orders?$top = 1& $expand = Customer(正确扩展客户).

我检查了WebAPI控制器代码,它看起来是一样的,除了它们使用EF Code First而不是Model First.外键装饰有属性:

微风样品有效

[ForeignKey("CustomerID")]
[InverseProperty("Orders")]
public Customer Customer {get; set;}

它只是没有意义……它与我的WebAPI控制器或EntityFramework关系有关…

更新2
我下载了最基本的ToDo Knockout Breeze示例并将此行添加到ToDoItem类:public User ToUser {get;组; }
然后,我可以使用http:// localhost:63030 / breeze / todos / Todos扩展WebAPI调用?$expand = ToUser

所以我得出结论,这与我使用EntityFramework DB First而不是Code First这一事实有关.在使用Breeze和EF的当前版本的WebAPI中,似乎可以做到.

更新3
我已将其缩小到我的数据库,EF Database First和Code First差异,但仍未确定问题.我已经从模型改为Code First方法,结果完全相同(即没有扩展).

例如:如果你看看这个有效的Breeze网站上的展开,http://learn.breezejs.com/api/northwind/Products?%24expand=Category,尝试将最后一个参数更改为无效字段,它会抛出一个错误,例如: :
http://learn.breezejs.com/api/northwind/Products?%24expand=Category1

但是,在我的代码中,它始终忽略此参数并返回所有记录,并且如果Expand参数不正确,则不会抛出异常:
http://www.ftter.com/desktopmodules/framework/api/dare/dares?$expand=To4657657User

因此我很难过……我不知道为什么这不起作用.

我的守则

[HttpGet]
    [Queryable(AllowedQueryOptions = AllowedQueryOptions.All)]
    public HttpResponseMessage Dares()
    {
        var response = Request.CreateResponse(HttpStatusCode.OK,(IQueryable<Dare>)contextProvider.Context.Dares);
        return ControllerUtilities.GetResponseWithCorsHeader(response);
    }

这是我的EF模型生成的类(使用Database First)

public partial class Dare
{
    public int DareId { get; set; }
    public int ToUserId { get; set; }
    public virtual User ToUser { get; set; }
}

解决方法

你的网址似乎缺少扩展查询选项的$…应该是$expand.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读