1.連接SQLServer,創建資料庫TestDB; 2.添加EF引用,點擊工具-NuGet包管理器-管理解決方案的NuGet程式包, 搜索EntityFramework包,點擊安裝; 3.在Web.config中添加節點 其中Data Source為伺服器名,Initial Catalog為剛纔在 ...
1.連接SQLServer,創建資料庫TestDB;
2.添加EF引用,點擊工具-NuGet包管理器-管理解決方案的NuGet程式包,
搜索EntityFramework包,點擊安裝;
3.在Web.config中添加節點
<connectionStrings> <add connectionString="Data Source=(local);Initial Catalog=TestDB;Integrated Security=True" name="TestDBDAL" providerName="System.Data.SqlClient" /> </connectionStrings>
其中Data Source為伺服器名,Initial Catalog為剛纔在SQLServer中新建的資料庫名,name則是接下來在代碼中會使用到的名字,數據訪問層和資料庫之間的映射通過名稱實現的,ConnectionString(連接字元串)的名稱和數據訪問層的類名稱是相同的,都是TestDBDAL,因此會自動實現映射;
4.在Models文件下添加“PlayerModel”新類,為該類添加三個屬性,並引用System.ComponentModel.DataAnnotations命名空間,在PlayerID屬性上加上[Key]關鍵字標識主鍵;
using System.ComponentModel.DataAnnotations;
namespace WebApplication6.Models
{
public class PlayerModel
{
[Key]
public int PlayerID { get; set; }
public string EnglishName { get; set; }
public string ChineseName { get; set; }
}
}
5.在項目下添加“DataAccessLayer”文件夾,並且添加“TestDBDAL.cs”新類,並且引用System.Data.Entity命名空間,使該類繼承DbContext類。定義映射關係,重寫OnModelCreating方法,其中Players為表名,運行時會自動生成在SQLServer中。再在該類下定義一個DbSet類型的新屬性,表示資料庫中能查詢到的所有play數據;
using System.Data.Entity;
using WebApplication6.Models;
namespace WebApplication6.DataAccessLayer
{
public class TestDBDAL : DbContext
{
public DbSet<PlayerModel> Players { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<PlayerModel>().ToTable("Players");
base.OnModelCreating(modelBuilder);
}
}
}
6.在HomeController.cs下的Index方法中添加獲取Players的方法;
public ActionResult Index()
{
TestDBDAL testDBDAL = new TestDBDAL();
List<PlayerModel> listPlayers = testDBDAL.Players.ToList();
return View();
}
7.運行項目;刷新TestDB資料庫,會看到已經新建了Players表,並且有3列屬性,其中PlayerID為主鍵。
8.為該表添加數據,並保存;
9.在Model文件夾下添加ListPlayerModel.cs新類,並且添加一個List類型的屬性;
using System.Collections.Generic; namespace WebApplication6.Models { public class ListPlayerModel { public List<PlayerModel> Employees { get; set; } } }
10.將HomeController.cs下的Index方法改為獲取資料庫中players,並且傳遞給頁面;
public ActionResult Index() { TestDBDAL testDBDAL = new TestDBDAL(); ListPlayerModel listPlayerModel = new ListPlayerModel { Employees = testDBDAL.Players.ToList() }; return View(listPlayerModel); }
11.在頁面構造球員列表容器;
@using WebApplication6.Models; @model ListPlayerModel @{ Layout = null; } <div> <table> <tr> <th>EnglishName</th> <th>ChineseName</th> </tr> @foreach (PlayerModel player in Model.Employees) { <tr> <td>@player.EnglishName</td> <td>@player.ChineseName</td> </tr> } </table> </div>
12.運行代碼,頁面會出現資料庫中3個球員的屬性;
插入數據
13.在index.cshtml後追加添加球員的div;
<div> Add New Player<br /> <form action="/Home/AddNewPlayer" method="post"> EnglishName:<input name="EnglishName" value="" type="text" /><br /> ChineseName:<input name="ChineseName" value="" type="text" /><br /> <input type="submit" value="Add" /> </form> </div>
14.在項目根目錄下添加BAL(業務邏輯處理)文件夾,併在文件夾下新添PlayerBAL.cs類,用來處理球員相關的業務邏輯。在該類下添加AddPlayer方法;
using WebApplication6.DataAccessLayer; using WebApplication6.Models; namespace WebApplication6.BAL { public class PlayerBAL { public PlayerModel AddPlayer(PlayerModel player) { TestDBDAL testDBDAL = new TestDBDAL(); testDBDAL.Players.Add(player); testDBDAL.SaveChanges(); return player; } } }
15.在HomeController下新添AddNewPlayer方法;
public ActionResult AddNewPlayer(PlayerModel p) { PlayerBAL playerBAL = new PlayerBAL(); playerBAL.AddPlayer(p); return RedirectToAction("Index"); }
其中RedirectToAction方法是重定向到XXX的方法,這裡是指添加完球員後再次重定向到Index.cshtml這個View;
16.運行代碼,併在View上添加球員,點擊Add,可得剛纔添加完的球員信息;