breeze-brideg-angular2:我需要创建我的微风实体类吗?

时间:2016-12-30 17:19:18

标签: angular typescript breeze

使用breeze-brideg-angular2时是否需要创建我的breeze实体类,否则如何在https://github.com/Breeze/breeze.bridge.angular2/blob/master/README.md

的建议解决方案中获得以下代码行?
import { Customer } from './entities'; 

2 个答案:

答案 0 :(得分:0)

该代码段假定您已为模型实体创建了类。这些课程并不是必需的,但它们确实很有帮助。

你可以手工制作它们并不难。

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

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

答案 1 :(得分:0)

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

试试这个:

(我用angular-cli生成的项目做了这个) 从temphire示例中获取整个tools文件夹并将其放入项目文件夹中。确保已按照metadatagenerator.exe文档中的建议完成了把手的npm安装。

复制package.json脚本:元数据行:entities:和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实体文件夹中复制entity-base.ts文件(或者将tsgen-core.js复制到不使用它。建议不要这样做,因为它具有我认为可能派上用场的实体状态的扩展属性)

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

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

"breeze-bridge-angular2": "^0.3.6",
"breeze-client": "^1.6.0",

现在转到命令提示符并运行元数据实体。 (如果您一次只运行一个,则更容易调试)

如果有什么不清楚的话,很快就把这个放在一边很高兴。如果我以特别愚蠢或误导的方式做过或解释过某些事情,希望沃德或周杰伦会说话。

希望看到更多Breeze粉丝在这里分享ng2体验,直到Ward和Jay有时间记录更多内容。微风是值得的。