breeze-brideg-angular2 :我需要创建我的 breeze 实体 类

breeze-brideg-angular2 : do I need to create my breeze entity classes

我是否需要在使用 breeze-bridge-angular2 时创建我的 breeze 实体 类,否则我如何让下面的代码行在 https://github.com/Breeze/breeze.bridge.angular2/blob/master/README.md[= 的建议解决方案中工作13=]

import { Customer } from './entities'; 

该代码段假设您已经为您的模型实体创建了 类。这样的 类 不是必需的,但它们确实有帮助。

您可以手动创建它们,这并不难。

在许多情况下,您可以使用我认为在引用的 TempHire 示例中描述的工具从服务器端 #C 类 生成它们(代码肯定在那里)。

更好的文档会有所帮助,我们同意。

我最近也在为同样的问题苦苦挣扎。我没有使用工作单元,而是使用单个存储库 - dbContext,如 John Papa 的 SPA Pluralsight 示例所示 1.x。编译为 data.dll

的数据项目中引用的模型项目

试试这个:

(我用 angular-cli 生成的项目做了这个) 将 temphire 示例中的整个工具文件夹放入项目文件夹中。确保您已经按照 metadatagenerator.exe 文档中的建议完成了 handlebars 的 npm 安装。

复制 package.json 脚本:元数据行:实体:和 metadata-entities:

您将需要这些,并且必须调整数据模型的路径和 dll 本身的名称。

 "metadata": ".\tools\bin\MetadataGenerator.exe..\CFSWH.Web\bin\Debug\CFSWH.Data.dll -o metadata.json",
"entities": "node ./tools/tsgen.js",
"metadata-entities": "npm run metadata && npm run entities"

您可能知道 dbContext 中有一些棘手的行。我的第一次失败是由于忘记了这一点,并使用了我的 SQL 数据库中没有这些行的典型逆向工程 dbcontext:

public CFS_WHContext() : base(nameOrConnectionString: "CFS_WH") { }

    static CFS_WHContext()
    {
        var type1 = typeof(System.Data.Entity.SqlServer.SqlProviderServices);
        Database.SetInitializer<CFS_WHContext>(null);
    }

在tools文件夹中,需要调整tsgen.js文件

tsGen.generate({
    inputFileName: './metadata.json',
    outputFolder: './src/app/core/entities',
    camelCase: true,
    kebabCaseFileNames: true,
    baseClassName: 'EntityBase'
});

反映实体的正确输出文件夹。您必须提前创建此文件夹。从 temphire 实体文件夹(或 fiddle tsgen-core.js 复制 entity-base.ts 文件以不使用它。建议不要这样做,因为它具有我认为可能会出现的 entityState 的扩展属性方便)

确保在 package.json 中的脚本中,您的 bin 文件夹路径正确,其中包含您的 dll。

假设您已经安装了所有 breeze 文件,安装 temphire 中显示的服务器和客户端,包括 package.json

中的这些依赖项
"breeze-bridge-angular2": "^0.3.6",
"breeze-client": "^1.6.0",

现在转到命令提示符并 运行 metadata-entities。 (如果你一次 npm 运行 它们更容易调试)

很快就把它放出来,如果有什么不清楚的地方,很高兴展开讨论。如果我以特别愚蠢或误导的方式做了或解释了某事,希望 Ward 或 Jay 能插话。

希望看到更多 Breeze 粉丝在这里分享 ng2 经验,直到 Ward 和 Jay 有时间记录更多内容。 Breeze 值得努力。