Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 实体框架n层_Entity Framework_C# 4.0_Dto - Fatal编程技术网

Entity framework 实体框架n层

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,该方法返

我正在利用实体框架与一些WCF服务和我建立的一些MVC3网站进行接口。我使用的是数据库优先的方法

我创建的是一个库,其中包含数据、模型和CRUD文件夹。数据包含edmx文件和用于创建ToDTO()方法的my Entities的分部类。该模型包含我可以作为对象传递的每个实体的类。CRUD包含预期的内容—公共读取、更新和删除方法

我的实体以“StudentEntity”的方式命名,而我的DTO有一个更简单的名称,如“Student”。因此StudentEntity类有一个方法TodToDo,该方法返回一个Student对象

我的CRUD文件夹有一个名为Student的类,它包含学生实体的CRUD操作

当我让另一个deleloper查看代码时,他们会对正在查看的学生、实体、DTO或CRUD类感到困惑


我应该如何更改命名方案以使其更易于理解?另外,你能给我一些关于清理的建议吗。也许我不需要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 the
Repository模式
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 the
Repository模式
Decorator模式
。这是软件架构和imo的一大进步,值得付出努力。你不一定需要应用这些模式,但了解它们并讨论它们是一种很好的方式。