将Breeze与EF一起使用时出错

将Breeze与EF一起使用时出错,breeze,Breeze,我正在使用breezejs和EF。我的Web API返回一个“对象”,该对象由我用来绑定到网格的多个链接实体的属性组成。我需要在以后更新一些属性,并且我希望缓存数据,因此。我正在使用noDB示例创建一个自定义实体 第一个问题是,breeze似乎希望在addEntityType方法中传递名为name的属性,或者抛出错误“structuralTypeName”参数必须是“string” 第二个问题是对StructureType的调用。breeze 4742行的_fixup似乎抛出了以下错误对象#没有

我正在使用breezejs和EF。我的Web API返回一个“对象”,该对象由我用来绑定到网格的多个链接实体的属性组成。我需要在以后更新一些属性,并且我希望缓存数据,因此。我正在使用noDB示例创建一个自定义实体

第一个问题是,breeze似乎希望在addEntityType方法中传递名为name的属性,或者抛出错误“structuralTypeName”参数必须是“string”

第二个问题是对StructureType的调用。breeze 4742行的_fixup似乎抛出了以下错误对象#没有方法_fixup’,尽管我可以看到函数存在

有人能指出我在下面的代码中做错了什么吗?错误在addEntityType调用中

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/t
addEntityType
…之间存在差异,因为我没有看到。我刚刚粘贴了Jay的示例(用
shortName
代替
name
)进入一个纯1.3.3项目,没有出现异常。我想看一个例子,解释为什么你认为人们应该从GitHub而不是使用v1.3.3Nuget pkg。情况不应该是这样。如果是这样,我们需要立即修复它。