[英]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.