我正在使用代碼優先方法來顯示使用SQL Server的多個表中的數據。對於我的C#學期項目,我正在建立一個社交網站。在我的索引視圖中,我想顯示來自兩個表格的數據,即來自帖子和評論。如何使用代碼優先方法顯示多個表中的數據
我嘗試了很多,但是下面沒有任何內容是在我的索引操作中。
首先,我使用這個,但後來我認爲它只執行表間的簡單連接。
public ActionResult Index()
{
var myobj = DB.Comments.Include("Post").ToList();
return View(myobj);
}
如果我使用下面,而不是我上面的索引操作裏面的SQL查詢,並將其傳遞給視圖,它會產生一個例外。我如何避免這種情況?
public ActionResult Index()
{
var myobj = from u in DB.Posts
join b in DB.Comments
on u.UserID equals b.UserID
into obj
from ua in obj.DefaultIfEmpty()
select new { userComments = (ua == null) ? "" : ua.UserComments, UserPosts = u.UserPosts };
return View(myobj);
}
其中內Index.cshtml我使用的是強類型查看:
@model IEnumerable<myApp.Models.DB.Comment>
,然後用foreach
循環顯示所有信息和評論。
但它只顯示那些postID存在於註釋表中的帖子(來自帖子的外鍵在註釋表中)。
我將如何顯示所有帖子及其評論(如果有)?
我使用.edmx文件作爲後端,用於從數據庫中檢索/添加數據我使用的是代碼優先的方法。
下面是一個代碼示例:
private SocialNetworkingEntities net = new SocialNetworkingEntities();
public void Add(RegisterView user)
{
DB.UserInfo User = new DB.UserInfo();
User.Name = user.UserName;
User.Password = user.UserPassword;
User.Email = user.UserEmail;
User.Birthday = user.UserDOB;
User.Sex = user.UserSex;
net.UserInfoes.Add(User);
net.SaveChanges();
}
但問題是,在我的評語表foriegn關鍵是從後表即當前帖子ID我已經使用這個(VAR allPosts = DB.Posts.Include(「意見」)ToList();。) 但它會生成異常becoz張貼表與我的索引視圖中的評論表沒有關聯如果我使用(@model IEnumerable )比我無法訪問評論簡單我想顯示數據就像在Facebook序列中] –
2011-12-16 09:01:31