【问题标题】:design advice : Entity Framework useful with stored procedures?设计建议:实体框架对存储过程有用吗?
【发布时间】:2010-11-22 09:58:47
【问题描述】:

我是 .NET 新手,处于数据库前端应用程序设计过程的早期阶段,正在寻求一些建议。

我不确定我是否明白...

数据库非常规范化,但提供了许多存储过程来抽象逻辑模型(例如,Select sproc 从多个表中返回一个数据集,紧密反映业务对象,将 sprocs 插入/更新到多个表等。 )

我应该如何设计 DAL? 我不确定实体框架在这种情况下有什么好处。 生成时,它反映了规范化的 DB 模式,而不是它的抽象。 或者,如果我映射存储过程来生成它(这需要一些工作,因为存储过程中的 T-SQL 是动态的并且带有连接),我得到了业务对象,但看不到它的好处:实体代表一个单个“抽象”表,而不是一组具有 Datarelations 的实体,存储过程处理对多个表的调用。将生成的更改事件映射到 sproc 似乎比直接调用 sproc 需要更多的工作。

我错过了什么?

谢谢,

迈克尔。

【问题讨论】:

  • 我真的不知道你真正想做什么。第一个问题是你想如何定义你的实体模型——先做,然后调整数据库以反映它。 EF 不会做任何魔术,将数据库直接映射到实体是一项足够复杂的任务,所以不要期望太多。
  • 一个具体的例子:我有个人和组织表,它们中的每一个都以多对多的关系链接到一个地址表(具有附加属性的中间表)。 DB 逻辑和存储过程仅公开(或更新):Person 表、Org 表、PersonAddress 表和 OrgAddress,抽象中间表(电话等逻辑相同)。我虽然只是创建单独的 ST 数据集:人员(+ 链接表)、组织等。但后来我忘记了 EF 吗?抱歉,我明明是初学者……

标签: entity-framework design-patterns stored-procedures


【解决方案1】:

可以用 EF 做到这一点,但设计师不会帮助你;它不知道如何从存储的过程签名中派生实体类型。您需要手动编写 EDMX。 CTP 4 代码优先可能更容易,但我从未尝试过。

【讨论】:

    【解决方案2】:

    经过一些研究,我想我开始走上正轨了。 以下文章非常有帮助: Entity Framework Modeling: Table Per Hierarchy Inheritance

    另请参阅:实体框架建模:实体拆分

    明确地说,我想要的是在 EF 模型中抽象 DB 模式。 (我不想要任何代表“无”的实体,例如多对多关系)。

    除了这些建模技术之外,我还使用视图来生成 EF 模型,并为 CRUD 添加了存储过程。

    正如我所说,我是初学者。如果我走错了路,请告诉我...

    【讨论】:

      猜你喜欢
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      • 1970-01-01
      • 2016-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多