【问题标题】:Read entities of entity framework from frontend从前端读取实体框架的实体
【发布时间】:2013-06-10 21:22:30
【问题描述】:

您好,我如何从前端访问实体框架生成的实体? 从我的业务逻辑我可以访问它,但我不能从前端访问它。

我可以将实体从实体框架项目移动到业务逻辑层或在其中复制它们吗?

我认为应该有一个简单的方法来做到这一点,因为我不敢相信微软已经开发了一个模式,数据层应该被 ui 直接引用,这是人们 8 岁时做的事情

【问题讨论】:

  • 我不知道如何移动实体,我该怎么做才能移动它们?这正是我所要求的
  • 例如,没有什么可以阻止您在 DataGridView 中显示由上下文获取的实体。什么对你最好取决于你没有提到的很多事情。复杂性,web/winforms/WPF/OData 等等。哎呀,也许EF甚至不是最好的选择。通常研究示例应用程序效果更好,例如this one
  • 这是一个完全有效的问题。许多设计工作都具有 DTO 架构,当然可以使用 EF,尽管首先使用代码可能更容易(请参阅下面的答案)。或者,有些人喜欢代理数据类,从而完全隐藏 UI 中的数据实现。

标签: asp.net visual-studio-2012 entity-framework-5


【解决方案1】:

我将从 Entity Framework 5 / VS2012 的角度向您介绍这一点。但是其他版本应该也可以类似地工作。

假设您的数据项目中有三个项目(data/business/ui)和一个实体框架上下文 (.edmx) 项。

  1. 为您的解决方案创建一个新项目(类库)。该项目将容纳您的实体 (POCO) 对象,因此请适当命名。

  2. 创建从数据项目到新实体项目的项目引用

  3. 在您的新项目中创建一个新项目 (EF 5.x DbContextGenerator)

  4. 删除新建项目中的Context.tt文件。

  5. 打开另一个 .tt 文件并修改定义 inputFile 的行以映射到您的 .edmx 文件

    const string inputFile = @"../<dataprojectname>/<mydata>.edmx";

  6. 在您的数据项目中展开“mydata”.edmx 并找到名为“mydata”.tt 的实体模板(您将知道它是正确的,因为它展开以显示您的实体列表)并删除它。

  7. 修改“mydata”.Context.tt 文件:向下滚动直到看到 using 状态。在步骤 3 中创建的实体的命名空间中附加使用列表。

  8. 现在您可以从业务和 UI 项目直接创建对实体项目的引用。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    相关资源
    最近更新 更多