2

我在这里看到了很多此类问题,但它们要么没有答案,要么与我要问的问题或我需要的细节不完全相同。

我在下面包含了我的项目的屏幕截图,以获取有关事物的高级参考视图。

  1. 在我的“示例”解决方案中,我目前有一个名为的项目Sample.Data.Model,其中包含我的数据库优先模型的 edmx 文件。
  2. 按照此 MSDN 演练中的步骤,然后我将自动生成的 POCO 类移动到一个单独的项目中,并将其命名为Sample.Data.Entities.
  3. Sample.Data.Entities然后我在我的项目中引用了该Sample.Data.Model项目并修复了所有使用,以便我的项目成功构建。
  4. 我当然需要添加到 POCO 类中,所以我在项目中为我的部分类添加了一个PartialClasses文件夹。Sample.Data.Entities

然后这就是我迷路的地方。在较小的(非 n 层项目)中,我的 edmx 文件和部分类位于同一个项目中,因此我可以在我的部分类文件中添加与类对象相关的方法,如下所示:

namespace Sample.Data.Entities
{
    public partial class User
    {
        public string FullName 
        { 
            get 
            { 
                return string.Format("{0} {1}", this.FirstName, this.LastName); 
            } 
        }
    }

    public User GetUser(int userID)
    {
        using (var dc = new ProntoEntities())
        {
            return (from u in dc.Users where u.ID == userID select u).SingleOrDefault();
        }
    }
}

然后在 MVC 项目中我可以做这样的事情......

User user = new User();
user = user.GetUser(1);

或者

User user = new User();
user.FirstName = "John";
user.LastName = "Smith";
user.Update();

但是,在当前的设置中我不能这样做,因为部分类对实体一无所知。

所以,我的问题是,在我当前的设置中,我在哪里放置数据的“查询”?

另外,如果我要为我的 MVC 项目制作“ViewModels”,它们应该放在哪里?我通常会将它们与我的部分类和 edmx 文件放在同一个项目中。

点击查看下面图片的放大版本

在此处输入图像描述

4

2 回答 2

1

所以,我的问题是,在我当前的设置中,我在哪里放置数据的“查询”?

我认为您应该使用神奇的存储库模式。
例如:http ://www.remondo.net/repository-pattern-example-csharp/

另外,如果我要为我的 MVC 项目制作“ViewModels”,它们应该放在哪里?

由于视图模型包含与其视图相关的数据,我相信您不需要将实体或其部分类放在一起。如果我是你,我只是把模型文件夹放在你的 MVC 项目中。

于 2013-09-28T19:00:14.770 回答
1

您可能对使用开源N 层实体框架感兴趣,它在服务器端使用实体框架并生成整个基础架构,以构建基于 WCF 的 N 层架构,包括客户端上的类似 EF 的 API。查看框架的用户指南和可在 codeplex 上下载的示例应用程序。由此产生的解决方案是高度可定制的,同时提供了放置什么的指导。

于 2014-06-24T21:31:57.300 回答