Poco + Entity Framework 4.我应该在哪里添加使用Poco类的方法?

时间:2011-04-08 19:08:32

标签: entity-framework entity-framework-4 model poco partial-classes

我曾尝试将Entity Framework 4和POCO用于我的MVC 3项目。可能是,我不明白这个ORM的主要思想,但问题是:

  1. 我添加了ADO .NET实体数据模型并根据数据库建立模型。
  2. 我点击了添加代码生成项并添加了ADO .NET POCO实体生成器。
  3. 它为每个数据库表创建类。
  4. 我想添加一些方法来处理数据(添加,更新,删除,GetAll等)到适当的模型。 对于LINQTOSQL,我添加了部分类并将它们放到了Models中。但现在我不能这样做因为:
  5. a)Models文件夹包含具有相同名称的类,由POCO创建。

    b)如果我将我的部分类放在另一个文件夹中,它将是另一个命名空间 - 所以,这样的类不会是部分类。

    c)如果我将我的代码放在POCO类中,它可以在更新POCO期间销毁。

    我该如何使用它?我可以把我的方法用于数据工作吗? 是POCO和EF的最佳方式是另一个项目 - http://blogs.msdn.com/b/adonet/archive/2010/01/25/walkthrough-poco-template-for-the-entity-framework.aspx吗?

3 个答案:

答案 0 :(得分:2)

您可以将部分类放在另一个文件夹中并修改名称空间。

答案 1 :(得分:2)

首先,您不必在POCO中编写CRUD, 在edmx.cs文件中有许多地方可以执行此操作,或者再编写一个层,该层称为CRUD服务,它使用上下文对象处理数据库操作。

现在回答你的问题,

  1. 创建单独的Models文件夹并将Model类放在那里。 您的Model类可能喜欢这个,

    EmployeeDepartmentModel
    {
     prop EmpList List(Emp);
     prop DeptList List(Dept);
     //Emp and Dept are my POCOs
    }
    
  2. 所以现在我必须填写这两个列表(你的CRUD问题), 为此,我将在Controller类中创建一个方法(最好在另一个库中编写这样的逻辑,但暂时我建议你在Controller中创建),

    FillTheModel()
    {
      EmployeeDepartmentModel.EmpList = EDMX.GetAllEmployees;
      EmployeeDepartmentModel.DeptList = EDMX.GetAllDepartments;
    }
    
  3. 现在您可以将此模型与您的视图绑定。

答案 2 :(得分:2)

我同意allisewell,但是如果你真的想要为部分类添加部件,请给文件另一个名字, 例如MyPoco.Part2.cs或修改t4模板以命名生成的文件 例如Poco.Generated.cs