我可以使用一些指导,了解如何在Breeze版本及其依赖项之间手动更新。我不相信我可以使用NuGet包管理器进行更新。
我一直在使用Breeze,Knockout,WebAPI等开发我的单页应用程序。我一直在使用Breeze版本0.61并希望升级到最新版本,因此我可以利用ODataActionFilters而不必解析Request.QueryString来提取参数和过滤器。例如,当我打电话
var getMachineById(machineId) {
var query = EntityQuery
.from("Machines")
.where("machineId", "eq", machineId);
return manager.executeQuery(query)
.then(function (data) {
do_something_with(data.results);
})
.fail(queryFailed);
}
Breeze必须有办法为我处理,所以我可以做这样的事情:
[AcceptVerbs("GET")]
public IQueryable<Machine> Machines()
{
return _contextProvider.Context.Machines;
}
而不是
// eg "?$filter=machineId%20eq%205"
[AcceptVerbs("GET")]
public IQueryable<Machine> Machines()
{
IQueryable<Machine> x = _contextProvider.Context.Machines;
List<ODataQueryString> list = null;
string qs = Request.RequestUri.Query.ToString(CultureInfo.CurrentCulture);
list = new ODataQueryStringParser(qs).Parse();
if (list != null)
{
int machineId = int.Parse(list[0].Value); // covert string to an int
x = x.Where(o => o.MachineId == machineId);
}
return x;
}
我注意到Controller中的属性修饰在示例中已更改。我也需要改变我的吗?
namespace PilotPlantBreeze.Controllers
{
[JsonFormatter, ODataActionFilter]
public class BreezeController : ApiController
{
readonly EFContextProvider<PilotPlantDbContext> _contextProvider =
new EFContextProvider<PilotPlantDbContext>();
[AcceptVerbs("GET")]
public string Metadata()
{
return _contextProvider.Metadata();
}
[AcceptVerbs("POST")]
public SaveResult SaveChanges(JObject saveBundle)
{
return _contextProvider.SaveChanges(saveBundle);
}
... etc.
}
}
我的第三方库位于〜\ Scripts \ lib文件夹中。如果我使用NuGet包管理器进行更新,它会将所有替换放在〜\ Scripts中。如何在不弄乱我的Team Foundation Server(Azure)源代码控制的情况下将文件移动到lib文件夹中?
Antlr3.Runtime.dll,Breeze.WebApi.dll,Irony.dll,Newtonsoft.Json.dll,WebActivator.dll以及版本之间的WebGrease.dll的运行时版本是否兼容。我打赌不是。我是否需要在Visual Studio中进行更改?
我可以从packages.config中的包文件夹中更改版本条目吗?
感谢。
答案 0 :(得分:1)
我认为您最好的方法是从项目中删除任何现有的breeze'.js'文件以及webApi和irony.dlls,然后只需安装最新的breeze nuget包。安装nuget软件包后,您可以继续将文件移动到项目中的其他位置以匹配其“旧”位置。我也会为NewtonSoft nuget包做同样的事情,以防万一(微风会为你添加这个)。接下来,您可以更新到最新的nuget,然后移动文件。
正如您所注意到的,您还需要替换这些属性
[JsonFormatter,ODataActionFilter]
使用此属性
[BreezeController]
这假设您没有运行ASP.MVC4的测试版。我认为其他论坛中有一些帖子讨论如何从beta版迁移。