将生成的 EF 4 文件放在哪里?
我的 Web 应用程序中有 3 个 csprojs:
- UI.Web
- Bll.Web
- DAL.Web
UI.Web 引用 Bll.Web 和 Bll.Web 引用 DAL.Web。
DAL.Web 非常简单,仅包含以下方法:
GetDataTableFromSP
GetScalarFromSP
ExecuteScalarFromSP
我使用 EF4 对数据库进行了逆向工程,还使用了自我跟踪实体模板。现在我只剩下 3 个文件:
- Model.Context.tt
- Model.tt
- Model.edmx
我的问题是,在我的项目结构中,我应该将它们放在哪里,以便维持我的 n 层方法?
谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我会将 T4 模板(以及生成的实体)放入其自己的模型程序集中,该程序集在所有层中引用。您只需将 Model.tt 移动到新程序集,使用编辑器之一在 VS 中打开它,这样您就可以看到 T4 代码。搜索 Model.edmx 并更新路径,以便其正确解析为包含 Model.edmx 的 DAL.Web 项目的磁盘上的物理位置。
这使您能够在架构/模型发生更改时重新运行 T4 模板,但无需 UI 需要依赖于 DAL,从而保持关注点分离。
刚刚发现以下内容有助于解释这个此处
I would put the T4 template (and therefore the generated entities) in its own Model assembly that is referenced across all the layers. You just need to move the Model.tt to the new assembly, open it in VS using one of the editors so you can see the T4 code. Search for Model.edmx and update the path so it resolves correctly to the physical location on disk of your DAL.Web project that contains the Model.edmx.
This gives you the ability to rerun the T4 template should the schema/model change but maintain separation of concerns by not having the UI need to take a dependency on the DAL.
Just found the following that helps explain this here
这完全取决于个人喜好。
例如,我总是将这些文件和模型放在应用程序的 DAL 方面。但我还需要访问生成的实体,例如 Student、Grade 或 StaffType。所以我引用了 BRL 中的 DAL。
在 UI 中,我还需要了解生成的实体,因为通常我为表单提供一个实体,然后它从该对象填充表单字段。因此,我还从 UI 中引用了 BRL。
It's all a matter of personal preference.
For example I always put those files and the model in the DAL aspect of my application. But I also need access to the generated entities, such as Student, Grade or StaffType. So I reference DAL from the BRL.
And in the UI I also need to be aware of the generated entities because usually I give a form an Entity and it populates the form fields from that object. So I also reference the BRL from the UI.