我在这里看到了很多这类问题,但它们要么没有答案,也不是我要问的问题或我需要的细节。
我在下面列出了我的项目的截图,以获得高级别的参考视图。
Sample.Data.Model
的项目,其中包含我的数据库优先模型的edmx文件。 Sample.Data.Entities
。 Sample.Data.Entities
项目中引用了Sample.Data.Model
项目并修复了所有用法,以便我的项目成功构建。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);
OR
User user = new User();
user.FirstName = "John";
user.LastName = "Smith";
user.Update();
但是,我不能在当前的设置中这样做,因为部分类对实体一无所知。
所以,我的问题是,在我当前的设置中,我对数据进行了“查询”吗?
另外,如果我要为我的MVC项目制作“ViewModels”,它们应该去哪里?我通常会将它们放在与我的部分类和edmx文件相同的项目中。
Click to view larger version of image below
答案 0 :(得分:1)
所以,我的问题是,在我当前的设置中,我对数据进行了“查询”吗?
我认为你应该使用神奇的存储库模式。
例如:http://www.remondo.net/repository-pattern-example-csharp/
另外,如果我要为我的MVC项目制作“ViewModels”,那么它们应该去哪里?
由于viewmodel包含连接到其视图的数据,因此我认为您不需要将实体或其部分类放在一起。如果我是你,我只需要放入MVC项目中的Model文件夹。
答案 1 :(得分:1)
您可能有兴趣使用在服务器端使用Entity Framework的开源N-Tier Entity Framework并生成整个基础架构,用于构建基于WCF的n层架构,包括客户端的类似EF的API 。查看框架的用户指南和可在codeplex上下载的示例应用程序。由此产生的解决方案可高度自定义,同时提供有关放置内容的指导。