【问题标题】:breeze.js : how do I exclude tables/entities from breeze metadata collection?微风.js:如何从微风元数据集合中排除表/实体?
【发布时间】:2015-09-16 10:36:58
【问题描述】:

我有一个单页应用程序,在后端使用 Entity Framework,在客户端使用 Breeze.js。我也在使用微风的 .Net EF 类。为了让微风客户端在客户端上创建微风实体,它调用了一个名为“MetaData”的控制器方法。此方法返回数据库中所有实体的集合,即使是那些可能不会在客户端使用的实体。

尽管元数据中没有编码逻辑,但它确实包含数据库的完整架构。其中一些实体用于安全和业务逻辑,我不希望整个结构向世界开放。

有没有办法将实体(不仅仅是单个属性)从微风元数据集合中排除?

谢谢

【问题讨论】:

    标签: javascript metadata breeze


    【解决方案1】:

    简单的方法是创建一个DbContext,它只包含您想要公开的那些类和关系。使用流畅的界面将其缩小并烧灼您不想要的关系。

    然后根据这个有限的DbContext创建一个EfContextProvider的实例。

    如果您愿意,您可以使用此精简版DbContext 专门用于元数据生成。如果必须,您可以切换到更强大的东西(包装在不同的 EfContextProvider 中)。

    请参阅文档章节"EF as a Design Tool"

    【讨论】:

    • 我认为这会起作用,但我似乎对 Breeze 如何确定要包含/排除哪些实体存在误解。暂时忽略这个单独的 DBContext 类。在单个 DBContext/EfContextProvider 场景中,微风正在加载元数据中的所有实体(大约 20 个),即使我的上下文类中只有 3 个 DbSet。轻而易举地读取实体和关系的 edmx 文件吗?您是否有一个流利语句的示例来排除实体?谢谢
    • 想通了,我想。由于关系,包括了整个实体列表。 3 个 DbSet 的实体与其他实体具有 FK 关系,并且那些实体具有关系等。因此,将整个 db 带入元数据。我找到了 modelBuilder.Ignore 语句。看起来这对我有用。
    猜你喜欢
    • 2018-05-13
    • 2015-08-16
    • 1970-01-01
    • 2014-11-02
    • 2013-04-05
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多