Entity framework 实体框架n层
我正在利用实体框架与一些WCF服务和我建立的一些MVC3网站进行接口。我使用的是数据库优先的方法 我创建的是一个库,其中包含数据、模型和CRUD文件夹。数据包含edmx文件和用于创建ToDTO()方法的my Entities的分部类。该模型包含我可以作为对象传递的每个实体的类。CRUD包含预期的内容—公共读取、更新和删除方法 我的实体以“StudentEntity”的方式命名,而我的DTO有一个更简单的名称,如“Student”。因此StudentEntity类有一个方法TodToDo,该方法返回一个Student对象 我的CRUD文件夹有一个名为Student的类,它包含学生实体的CRUD操作 当我让另一个deleloper查看代码时,他们会对正在查看的学生、实体、DTO或CRUD类感到困惑Entity framework 实体框架n层,entity-framework,c#-4.0,dto,Entity Framework,C# 4.0,Dto,我正在利用实体框架与一些WCF服务和我建立的一些MVC3网站进行接口。我使用的是数据库优先的方法 我创建的是一个库,其中包含数据、模型和CRUD文件夹。数据包含edmx文件和用于创建ToDTO()方法的my Entities的分部类。该模型包含我可以作为对象传递的每个实体的类。CRUD包含预期的内容—公共读取、更新和删除方法 我的实体以“StudentEntity”的方式命名,而我的DTO有一个更简单的名称,如“Student”。因此StudentEntity类有一个方法TodToDo,该方法返
我应该如何更改命名方案以使其更易于理解?另外,你能给我一些关于清理的建议吗。也许我不需要DTO类,并且可以通过某种方式使用扩展/反射,使每个ToTo方法没有单独的类。如果我必须保持相同的体系结构,我将使用以下命名约定:
// Namespaces & folders
// /DTO (Data Transfer Objects classes only)
// /Model (edmx files and utility classes)
// /Data (Repositories)
// /Services (Specialized repositories and business logic classes)
// Naming conventions
StudentDTO // (Data Transfer Object)
Student // (the entity itself)
StudentRepository // (very common and conventional name)
StudentService // (common and conventional name)
我的2美分,
真诚地
Max如果我必须保持相同的体系结构,我将使用以下命名约定:
// Namespaces & folders
// /DTO (Data Transfer Objects classes only)
// /Model (edmx files and utility classes)
// /Data (Repositories)
// /Services (Specialized repositories and business logic classes)
// Naming conventions
StudentDTO // (Data Transfer Object)
Student // (the entity itself)
StudentRepository // (very common and conventional name)
StudentService // (common and conventional name)
我的2美分,
真诚地
Max这种混淆源于这样一个事实:您有两个或两个以上的类表示相同的数据,因此几乎相同,但并不完全相同。我要说的是,为了保持n层体系结构,您必须承担这一成本。我肯定会将CRUD类重命名为类似于
StudentRepository
或至少是Students
的名称。对于您的CRUD类,学生数据访问组件可以使用StudentDAC的名称?混淆源于这样一个事实:您有两个或多个类表示相同的数据,因此几乎完全相同,但并不完全相同。我要说的是,为了保持n层体系结构,您必须承担这一成本。我肯定会将CRUD类重命名为类似于StudentRepository
或至少是Students
的名称。对于您的CRUD类,您可以将StudentDAC的名称用于学生数据访问组件?我还将在处理所有逻辑/CRUD/验证的业务对象库中添加一个StudentBO
。使用它将StudentDTO
链接到Student
实体,并从这里调用存储库类。我将其称为服务
,例如处理业务逻辑的StudentService
。您似乎正朝着我所寻找的方向前进。我理解您要在DTO中添加的内容,您是否建议StudentSErvice包含学生的所有CRUD操作?模型是edmx和所有实体的部分类吗?因此,我对存储库感到困惑。那是什么?存储库仅用于CRUD
。服务
将执行业务逻辑并操作dto
或模型
(更有可能是dto
)、验证等。。。典型的Service
方法将DTO
作为参数,并返回计算结果,例如double StudentService.GetFinalMark(StudentDTO student)
。通过这种方式,它可以很容易地进行单元测试。当进入该维度时,值得检查依赖注入
框架,如StructureMap、单元测试
框架,如NUnit和reading on theRepository模式
和Decorator模式
。这是软件架构和imo的一大进步,值得付出努力。您不一定需要应用这些模式,但了解它们并对它们进行讨论是一种很好的方式。我还需要在业务对象库中添加一个StudentBO
,该库处理所有逻辑/crud/验证。使用它将StudentDTO
链接到Student
实体,并从这里调用存储库类。我将其称为服务
,例如处理业务逻辑的StudentService
。您似乎正朝着我所寻找的方向前进。我理解您要在DTO中添加的内容,您是否建议StudentSErvice包含学生的所有CRUD操作?模型是edmx和所有实体的部分类吗?因此,我对存储库感到困惑。那是什么?存储库仅用于CRUD
。服务
将执行业务逻辑并操作dto
或模型
(更有可能是dto
)、验证等。。。典型的Service
方法将DTO
作为参数,并返回计算结果,例如double StudentService.GetFinalMark(StudentDTO student)
。通过这种方式,它可以很容易地进行单元测试。当进入该维度时,值得检查依赖注入
框架,如StructureMap、单元测试
框架,如NUnit和reading on theRepository模式
和Decorator模式
。这是软件架构和imo的一大进步,值得付出努力。你不一定需要应用这些模式,但了解它们并讨论它们是一种很好的方式。