【发布时间】:2015-11-02 21:39:55
【问题描述】:
我只是想创建一个适用于两种模型的控制器。 评论模型:
public class Comment
{
public int ID { get; set; } // property
public int PostID { get; set; }
public String Title { get; set; }
public String Name { get; set; }
public Uri Url { get; set; }
public String Text { get; set; }
public Post Post { get; set; }
}
public class CommentDBContext : DbContext
{
public DbSet<Comment> Comments { get; set; }
public System.Data.Entity.DbSet<BlogShauli.Models.Post> Posts { get; set; }
}
后模型:
public class Post
{
public int ID { get; set; } // property
public String Title { get; set; }
public String Author { get; set; }
public String AuthorSite { get; set; }
public DateTime ReleaseDate { get; set; }
public String Text { get; set; }
}
public class PostDBContext : DbContext
{
public DbSet<Post> Posts { get; set; }
}
现在我想创建一个适用于两种模型的单一控制器。 我读到这样做的方法是使用 ViewModel 模式,所以我创建了一个名为“BlogViewModel.cs”的模型类,代码如下:
public class MotorcycleViewModel
{
public Comment CommentPointer { get; set; }
public Post PostPointer { get; set; }
}
但是从这里我不明白做什么。我正在尝试使用实体框架创建一个新的控制器,但我不知道在 “数据上下文类” 中选择什么。有人能解释一下如何在两个模型和控制器之间建立连接吗?谢谢!
【问题讨论】:
-
您走在正确的道路上。在 Controller 中使用 MotorcycleViewModel。您可以通过 VS 模板使用这种类型简单地生成一个 CRUD 控制器,并查看它是如何被使用的。
-
拆分 DbContext 有什么原因吗?如果
Posts和Comments都是同一个 DbContext 的一部分,则无需选择。如果我有大量实体,我可能会决定拆分,但您需要小心地将相关实体组合在一起,以免遇到此问题。 -
我必须将它拆分为 2 个数据库.. Kanchirk,我无法理解控制器将是哪种类型,因为我创建它时我需要选择“日期上下文类”并且我有两个- 在两种型号中..
-
ViewModels 不是实体,也不是
DbContext的成员。 -
@TomerAro 您想在视图中显示什么,您的视图模型将取决于您的视图要求。
标签: c# asp.net asp.net-mvc asp.net-mvc-4