【发布时间】: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