使用ASP.NET MVC3+EF+Jquery製作文字直播系統(一)

來源:互聯網
上載者:User

在人民網:http://news.people.com.cn/GB/124421/index.html ,新華網:http://www.xinhuanet.com/xhzb/index.htm等網站都有文字直播。昨天剛剛完成了學校六十校慶上用的文字直播系統,當然不是使用MVC做的。今天我再使用ASP.NET MVC3+EF+JQuery完善一下這個系統,也作為Entity Framework 4 in Action讀書筆記系列前期的一個例子吧。

建立解決方案和項目

1.  首先,建立一個空的解決方案

解決方案的名稱為:LiveText,如:

2.  建立完解決方案,還需要建立三個項目,具體如下面的表格:

項目名稱 Visual Studio項目模板 用途

LiveText.Domain

C#類庫

儲存域的實體和邏輯

LiveText.WebUI

ASP.NET MVC 3 Web Application

儲存控制器和視圖

LiveText.UnitTests

Test Project

單元測試

3.  添加引用

我們的項目中使用到了Ninject,Moq工具類庫,首先需要添加對它們的引用,簡便的方法是使用VS的Package Manager Console(View ➤ Other Windows ➤Package Manager Console),輸入下面的命令:

Install-Package Ninject -Project LiveText.WebUI

Install-Package Ninject -Project LiveText.UnitTests

Install-Package Moq -Project LiveText.UnitTests

具體如:

具體項目之間的依賴關係如下表:

項目名稱 工具依賴 項目依賴

LiveText.Domain

沒有

沒有

LiveText.WebUI

Ninject

LiveText.Domain

LiveText.UnitTests

Ninject,Moq

LiveText.Domain,LiveText.WebUI

4.  設定依賴注入容器

項目中,我們使用Ninject建立控制器和處理依賴注入(DI)。在LiveText.WebUI項目中建立一個Infrastructure的檔案夾,在該檔案夾中建立一個NinjectControllerFactory類,代碼如下:

public class NinjectControllerFactory : DefaultControllerFactory{    private IKernel ninjectKernel;    public NinjectControllerFactory()    {        ninjectKernel = new StandardKernel();        AddBindings();    }    protected override IController GetControllerInstance(RequestContext requestContext,    Type controllerType)    {        return controllerType == null        ? null        : (IController)ninjectKernel.Get(controllerType);    }    private void AddBindings()    {    }}

然後修改Global.asax如下

protected void Application_Start(){    AreaRegistration.RegisterAllAreas();    RegisterGlobalFilters(GlobalFilters.Filters);    RegisterRoutes(RouteTable.Routes);    //修改的這個地方    ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());}

效果如:

至此,項目的基本架構就做完了,下面設計資料庫。

設計資料庫

這裡使用EF Code-First。

1.  編寫實體類

人民網的文字直播系統分為“國新辦發布會直播”、“國台辦發布會直播”等類別,每個類別下面又有很多直播的內容。文字直播系統大體需要這幾個實體類:

Category       ——      類別類                          Title      ——      標題類

          Text      ——      文字類                          User      ——      使用者類

在LiveText.Domain項目中建立一個檔案夾Entities,在該檔案夾中建立上面四個類:

public class Category{    /// <summary>    /// 類別編號    /// </summary>    public int CategoryID { get; set; }    /// <summary>    /// 類別名稱    /// </summary>    public string Name { get; set; }    /// <summary>    /// 標題集合    /// </summary>    public ICollection<Title> Titles { get; set; }}
public class Title{    /// <summary>    /// 標題編號    /// </summary>    public int TitleID { get; set; }    /// <summary>    /// 標題名稱    /// </summary>    public string Name { get; set; }    /// <summary>    /// 所屬類別    /// </summary>    public Category Category { get; set; }    /// <summary>    /// 文字集合    /// </summary>    public ICollection<Text> Texts { get; set; }}
public class Text{    /// <summary>    /// 文字編號    /// </summary>    public int TextID { get; set; }    /// <summary>    /// 發言人    /// </summary>    public string Prolocutor { get; set; }    /// <summary>    /// 發言內容    /// </summary>    public string ProContent { get; set; }    /// <summary>    /// 日期    /// </summary>    public DateTime ProDate { get; set; }    /// <summary>    /// 所屬標題    /// </summary>    public Title Title { get; set; }}
public class User{    /// <summary>    /// 使用者編號    /// </summary>    public int UserID { get; set; }    /// <summary>    /// 使用者名稱    /// </summary>    public string UserName { get; set; }    /// <summary>    /// 使用者密碼    /// </summary>    public string Password { get; set; }}

2.  添加EFCodeFirst

在Package Manager Console中輸入命令:

Install-Package EFCodeFirst -Project LiveText.Domain

3.  建立上下文類

在LiveText.Domain項目中,建立名為Concrete的檔案夾,在該檔案夾中建立一個LiveTextDbContext的類,它繼承自System.Data.Entity.DbContext,具體代碼如下:

public class LiveTextDbContext : DbContext{    public DbSet<Category> Categories { get; set; }    public DbSet<Title> Titles { get; set; }    public DbSet<Text> Texts { get; set; }    public DbSet<User> Users { get; set; }}

4.  修改Web.config

開啟LiveText.WebUI項目的Web.config,添加一個資料庫連接字串,name的值要和上下文類的名稱一樣。

  <connectionStrings>    <add name="LiveTextDbContext"          connectionString="Data Source=.;Initial Catalog=LiveText;Integrated Security=True;Pooling=False"          providerName="System.Data.SqlClient"/>  </connectionStrings>

建立一個HomeController,添加如下代碼:

public class HomeController : Controller{    LiveTextDbContext context = new LiveTextDbContext();    //    // GET: /Home/    public ActionResult Index()    {        var categories = context.Categories;        return View(categories);    }}

給Index添加一個View,如:

現在就可以運行了,運行結果如下:

再看看資料庫裡,EF已經為我們自動產生了資料庫,資料庫的結構如:

至此,我們資料庫的設計就完成了。

原始碼:http://files.cnblogs.com/nianming/LiveText201110131625.rar

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.