将Breeze与EF一起使用时出错
我正在使用breezejs和EF。我的Web API返回一个“对象”,该对象由我用来绑定到网格的多个链接实体的属性组成。我需要在以后更新一些属性,并且我希望缓存数据,因此。我正在使用noDB示例创建一个自定义实体 第一个问题是,breeze似乎希望在addEntityType方法中传递名为name的属性,或者抛出错误“structuralTypeName”参数必须是“string” 第二个问题是对StructureType的调用。breeze 4742行的_fixup似乎抛出了以下错误对象#没有方法_fixup’,尽管我可以看到函数存在 有人能指出我在下面的代码中做错了什么吗?错误在addEntityType调用中将Breeze与EF一起使用时出错,breeze,Breeze,我正在使用breezejs和EF。我的Web API返回一个“对象”,该对象由我用来绑定到网格的多个链接实体的属性组成。我需要在以后更新一些属性,并且我希望缓存数据,因此。我正在使用noDB示例创建一个自定义实体 第一个问题是,breeze似乎希望在addEntityType方法中传递名为name的属性,或者抛出错误“structuralTypeName”参数必须是“string” 第二个问题是对StructureType的调用。breeze 4742行的_fixup似乎抛出了以下错误对象#没有
manager.metadataStore.addEntityType({
name: "Transcription", shortName: "Transcription", namespace: "Etrans.Data.Models", autoGeneratedKeyType: breeze.AutoGeneratedKeyType.Identity,
dataProperties: {
audio: { dataType: DataType.String }, clientID: { dataType: DataType.Int32 }, clientName: { dataType: DataType.String },
clinicianfirstname: { dataType: DataType.String }, clinicianlastname: { dataType: DataType.String }, Notes: { dataType: DataType.String },
status: { dataType: DataType.String }, transcriptionid: { dataType: DataType.Int32, isPartOfKey: true }, user: { dataType: DataType.String }
}
});
manager.metadataStore.registerEntityTypeCtor("Transcription", null, customReportFields);
在服务器端,我有一个名为Etrans.data的项目中的数据层。web API调用查询数据层的存储库。在本例中,它正在查询一个名为Transcription的实体(Etrans.Data.Models.Transcription)和多个链接实体。在我的机器上,Breeze在调用addEntityType时抛出了一个错误消息:
Error configuring an instance of 'EntityType'. Unknown property: 'name'.
基本上,“name”不是addEntityType调用的有效配置参数。因此,消除您的“name”属性(这是不需要的,因为breeze使用shortName和命名空间构建了它),您的代码变成:
manager.metadataStore.addEntityType({
shortName: "Transcription",
namespace: "Etrans.Data.Models",
autoGeneratedKeyType: breeze.AutoGeneratedKeyType.Identity,
dataProperties: {
audio: { dataType: DataType.String },
clientID: { dataType: DataType.Int32 },
clientName: { dataType: DataType.String },
clinicianfirstname: { dataType: DataType.String },
clinicianlastname: { dataType: DataType.String },
Notes: { dataType: DataType.String },
status: { dataType: DataType.String },
transcriptionid: { dataType: DataType.Int32, isPartOfKey: true },
user: { dataType: DataType.String }
}
});
它运行得很好
希望这有帮助。对于所有使用热毛巾模板的人。。。建议从2013年5月15日起直接获取最新的BREEZE代码,不要使用NUGET更新
该死,我在这上面浪费了一天。nuget软件包源代码和breezejs.com提供的软件包似乎非常不同。我从breezejs下载了最新的源代码,我在前面的评论中提到的行不存在,事实上整个addEntityType函数是不同的。。。没有结构类型。名称!!我确实使用nuget更新到最新的稳定源代码。不确定这是来自热毛巾模板还是nuget。@shai-我对您遇到的困惑感到遗憾,这似乎是BreezeJS客户端元数据定义API演变的结果。但我不完全理解你的建议 HotTower模板和HT NuGet软件包确实依赖于BreezeJS NuGet软件包的旧版本,该软件包可能有一个
addEntityType
方法,该方法后来发生了更改(我没有查看)。我会和约翰爸爸一起更新HT的资料
但我不明白你要人们做什么。如果您处于HT模板当时的官方功能范围内,则HT模板将按交付方式工作。FWIW,客户端元数据定义当时处于测试阶段,我们说它的API可能会改变。这项工作仍在进行中
当然,将应用程序更新为相关软件包的最新版本会改变某些事情。这就是为什么要升级
您是说在更新到最新的Breeze NuGet软件包后,仍然存在问题吗?您是否指出最新的Breeze NuGet包(我写的是1.3.3)和GitHub中的最新源代码之间存在一些差异。总有一些不一致之处-GitHub上的BreezeJS总是持有我们的最新想法。。。其中许多将发生变化,没有一个被批准用于开发用途。我会建议人们去s
你是在告诉人们不要用热毛巾吗?为什么?您遇到的问题不在主流功能中(它甚至不是HT的官方功能)
OTOH,我理解并完全同意将所有依赖HT的软件包(包括Durandal和Toastr以及Breeze)升级到最新版本的建议
谢谢你和我们在一起。DANG!我刚刚证实了这一点:-)你们太快了,JayThanks,谢谢你们的回复。正如我在查询中提到的,如果我不使用“name”参数而只使用“shortName”参数,breeze会抛出以下错误——“structureTypeName”参数必须是“string”。它点击下面的第4724行。structuralType似乎是正在传递的对象。正如您所看到的,它正在寻找一个不存在的name属性。proto.addEntityType=function(structuralType){if(this.getEntityType(structuralType.name,true)){var xxx=7;}我认为您没有运行最新版本的Breeze,或者没有刷新缓存。我们运行了您提到的代码,在Breeze v 1.3.3上没有问题。我不完全理解。HotTower模板和nuget包确实引用了旧版本的BreezeJS,其中可能有现在不存在的
structureType.name代码>属性(客户端元数据定义当时处于测试阶段,我们说API可能会更改)@ward-我使用热毛巾模板,通过nuget升级到最新的breeze软件包,然后遇到了这个问题。然后我从git hub下载了最新的源代码,breeze的代码库不同。因此我建议从各自的源代码中获取最新的源代码。我没有说过breeze或热毛巾不应该使用l模板。相反,我是这两种模板的坚定支持者,并强烈推荐它们。很高兴听到你对HT的热情丝毫没有减弱。我真的很惊讶你发现GitHub和当前的v.1.3.3 NuGet w/r/taddEntityType
…之间存在差异,因为我没有看到。我刚刚粘贴了Jay的示例(用shortName
代替name
)进入一个纯1.3.3项目,没有出现异常。我想看一个例子,解释为什么你认为人们应该从GitHub而不是使用v1.3.3Nuget pkg。情况不应该是这样。如果是这样,我们需要立即修复它。