技术开发 频道

基于MVC框架开发Web论坛之新功能篇

  三、 修改论坛Repository

  为了满足新的单元测试,我不得不在ForumRepository类中添加两个新的方法。幸好,因为我们使用的是LINQ to SQL,所以实现该新的方法仅要求较少的代码。列表2给出了该新版本的ForumRepository类。
列表2–Models\ForumRepository.cs
 

using MvcFakes;
using System.Linq;
using System.Data.Linq;
using LinqToSqlExtensions;
using Microsoft.Web.Mvc;
using System.Collections.Generic;

namespace MvcForums.Models
{
    
public class ForumRepository : IForumRepository
    {
        
private IDataContext _dataContext;

        
public ForumRepository()
            : this(
new DataContextWrapper("conForumsDB", "~/Models/ForumsDB.xml"))
        { }
        
        
public ForumRepository(IDataContext dataContext)
        {
            _dataContext
= dataContext;
        }

        
public IList<Message> SelectThreads()
        {
            var messages
= _dataContext.GetTable<Message>();
            var threads
= from m in messages
                          where m.ParentThreadId
== null
                          
select m;
            return threads.ToList();
        }

        
public IList<Message> SelectMessages(int threadId)
        {
            var messages
= _dataContext.GetTable<Message>();
            var threads
= from m in messages
                          where (m.Id
== threadId || m.ParentThreadId == threadId)
                          
select m;
            return threads.ToList();
        }


        
public Message AddMessage(Message messageToAdd)
        {
            _dataContext.Insert(messageToAdd);
            return messageToAdd;
        }
    }
}

  该SelectMessages()方法返回一个对应于一个特定线程的消息集合。AddMessage()方法把一个新的消息添加到数据库中。当添加一个消息(它启动一个新的线程)或在一个现有线程上添加一个应答时调用这个方法。

0
相关文章