[英]ASP.Net Create Two Models With One Controller
我只是想创建一个可以使用两个模型的控制器。 评论模型:
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 Pattern,所以我创建了另一个名为“ BlogViewModel.cs ”的模型类,其代码如下:
public class MotorcycleViewModel
{
public Comment CommentPointer { get; set; }
public Post PostPointer { get; set; }
}
但从这里我不明白做什么。 我正在尝试使用Entity框架创建一个新的Controller,但我不知道在“数据上下文类”中要选择什么。 谁能解释我如何在两个模型和控制器之间建立连接? 谢谢!
你只需要一个控制器:发布。
由于评论与Post相关,您可以创建关系并使用EF对其进行映射。 因此,您的帖子将包含评论列表,可以根据您的选择热切或懒惰地检索。 所以谷歌的EF一对多关系,在你的帖子中创建一个IEnumerable的虚拟属性,并从任何模型返回它。
除非我在这里遗漏了一些东西,否则你不需要ViewModel ......至少不能解决这个问题。 在涉及组织时,ViewModel非常有用。
请在您的存储库类中尝试以下操作 -
public MotorcycleViewModel GetModelData(int commentId, int postId)
{
MotorcycleViewModel result =new MotorcycleViewModel();
using (var context = new CommentDBContext())
{
var post = (from pst in context.Post where pst.ID == postId select pst).FirstOrDefault();
var comment = (from cmt in context.Comment where cmt.ID == commentId select cmt).FirstOrDefault();
result.CommentPointer = comment;
result.PostPointer = post;
return result;
}
}
请点击链接查看从模型到视图模型的转换方式,反之亦然
你也可以这样做
@model MotorcycleViewModel
@Html.DisplayNameFor(x=>x.CommentPointer.Title)
@Html.DisplayFor(x=>x.CommentPointer.Title)
@Html.DisplayNameFor(x=>x.PostPointer.Title)
@Html.DisplayFor(x=>x.PostPointer.Title)
但是这段代码可以帮助你显示来自两个表的数据..而且@TomerAro我建议你使用一个上下文,因为多个上下文可能会引起混淆
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.