C#N层应用程序 - 如何隐藏生成的EF实体?

时间:2014-01-14 14:08:21

标签: c# entity-framework

我有2个项目

DAL
Main

DAL中,我创建了广告DataService类,同时也生成了EF上下文类。如何隐藏自动生成的EF类无法从Main项目访问?我想只能访问DataService类。

我无法修改EF实体并将internal修饰符放在那里,因为在更新上下文后它将被覆盖。

2 个答案:

答案 0 :(得分:1)

将EF模型及其生成的类放在一个单独的项目中,从DAL项目中引用该项目,然后您可以从public class DataService中选择公开的内容。

当然,如果您从EF模型公开实体,并且DataService是常规.NET类而不是WCF服务,那么您的客户端也需要引用EF项目......

如果你真的想隐藏客户端的实体,根本不允许客户端使用它们,你必须为客户端提供其他方式来读/写数据(比如你创建的DTO)在一个单独的项目或DAL项目中。)

答案 1 :(得分:1)

  • 将实体移至单独的项目
  • 从包含DataService的项目中引用该项目
  • 在主项目中引用您的DataService项目

如果您尝试使实体不了解架构,请使用类似AutoMapper的内容或使用代码内配置而不是.edmx