【发布时间】:2009-02-14 12:56:14
【问题描述】:
我正在尝试确定如何最好地构建 .NET 实体框架项目以实现良好的分层方法。到目前为止,我已经在一个玩家拥有和操作行星的基于浏览的游戏中进行了尝试。我是这样得到它的:
网站
这包含所有的前端。
C# 项目 - MLS.Game.Data
这包含带有我所有数据映射的 EDMX 文件。这里没有太多其他内容。
C# 项目 - MLS.Game.Business
这包含我称之为“经理”的各种类,例如 PlanetManager.cs。行星管理器具有各种用于与行星交互的静态方法,例如 getPlanet(int planetID),它将从 MLS.Game.Data 返回生成的代码对象。
从网站上,我会做这样的事情:
var planet = PlanetManager.getPlanet(1);
它从 MLS.Game.Data(从 EDMX 生成)返回一个 Planet 对象。它有效,但它在一定程度上困扰着我,因为这意味着我的前端必须引用 MLS.Game.Data。我一直觉得 GUI 应该只需要引用业务项目。
此外,我发现我的经理课程往往会变得非常繁重。我最终会在其中添加几十个静态方法。
所以...我的问题是 - 其他人如何布置他们的 ASP EF 项目?
编辑
不过,还有一些其他项目让我感到困扰。例如,假设我有我的 Planet 对象,它也是由向导生成的代码。如果有一天我的星球需要有一个专门的属性,比如说“人口”,它是基于星球对象的其他属性的某种计算。我想创建一个继承自 Planet 的新类然后返回它吗? (嗯,不知道这些类是否被 EF 密封?)
谢谢
【问题讨论】:
-
回应您的编辑 - 这就是数据和丰富对象分离的地方。丰富的对象了解如何在封装修改它们的操作的同时公开它们的属性。 DTO 仅用于将数据传输到持久层,不需要任何逻辑。
标签: c# asp.net entity-framework architecture web-architecture