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

发布于 2024-10-31 09:33:51 字数 744 浏览 1 评论 0原文

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

  1. 我添加了ADO .NET实体数据模型并根据数据库制作模型。
  2. 我单击“添加代码生成项”并添加“ADO .NET POCO 实体生成器”。
  3. 它为每个数据库表创建类。
  4. 我想添加一些处理数据的方法(添加、更新、删除、GetAll 等)到适当的模型。 对于 LINQTOSQL,我添加了部分类并将它们放置到模型中。但现在我不能这样做,因为:

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

I've tried to use Entity Framework 4 and POCO for my MVC 3 project. May be, I don't understand the main idea of this ORM, but the problem is following:

  1. I added ADO .NET Entity Data Model and make model according to database.
  2. I clicked Add Code Generation Item and added ADO .NET POCO Entity Generator.
  3. It makes classes for every database table.
  4. I want to add some methods to work with data (Add, Update, Delete, GetAll etc) to appropriate models.
    For LINQTOSQL I added partial classes and placed them to Models. But now I can't do it because:

a) Models folder has classes with the same names, which was created by POCO.

b) If I place my partial class in the another folder, it will be another namespace - so, such classes won't be partial one.

c) If I place my code in POCO classes, it can be destroyed during update POCO.

How can I use it? Where sould I place my methods for data working?
Is the best way to make for POCO and EF the other project - http://blogs.msdn.com/b/adonet/archive/2010/01/25/walkthrough-poco-template-for-the-entity-framework.aspx?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

乞讨 2024-11-07 09:33:51

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

现在回答您的问题,

  1. 创建单独的模型文件夹并将模型类放入其中。
    你的模型类可能会喜欢这个,

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

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

First of all you don't have to write your CRUD inside POCO,
There are many places where you can do it like in edmx.cs file or write one more layer which is called as CRUD Services which handles the Database operations using context object.

Now coming to your questions,

  1. Create separate Models folder and place the Model classes in there.
    Your Model class may like this,

    EmployeeDepartmentModel
    {
     prop EmpList List(Emp);
     prop DeptList List(Dept);
     //Emp and Dept are my POCOs
    }
    
  2. So now I have to fill both of these list(Your CRUD question),
    For that, I will Create one method in Controller class(its better to write such logic in some another library, but for time being I suggest you to create in Controller),

    FillTheModel()
    {
      EmployeeDepartmentModel.EmpList = EDMX.GetAllEmployees;
      EmployeeDepartmentModel.DeptList = EDMX.GetAllDepartments;
    }
    
  3. Now you can bind this model with your view.

对你而言 2024-11-07 09:33:51

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

You can place the partial classes in another folder and modify the namespace.

沦落红尘 2024-11-07 09:33:51

我同意 allisewell 的观点,但如果你真的想将部分添加到部分类中,请给文件另一个名称,
例如 MyPoco.Part2.cs 或修改 t4 模板来命名生成的文件
例如Poco.Generate.cs

I agree with allisewell, but if you really want to add parts to partial classes, give files another name,
e.g. MyPoco.Part2.cs or modify t4 template to name generated files
e.g. Poco.Generated.cs

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文