vs2010 ef mysql_VS2010,MVC2与EF(Entity Framework)实现增删改的实例

这是学习MVC2和EF访问数据库后的第一个练习实例。实现的是对主题图片的增、删、改及显示的过程,下面是实现步骤和代码。

1:先创建一个mvc工程,打开VS2010,在File->New->Project...     在Visual C#下选中 ASP.NET MVC 2 Web Application  在对话框的Name栏目改名为ThemeMVC,存放目录自己可选。确定后一个带有模板的MVC框架就已经创建好了。

2:创建数据库,在Solution Explorer 栏目 ThemeMVC项目下的App_Data栏右击,选Add->New Item... 下的 SQL Server Datebase 改名字为ThemeDB 然后点击Add按钮,所添加的数据库ThemeDB就出现在App_Data下,双击ThemeDB,出现Server Explorer 框,在ThemeDB下的Tables 右击Create Table 创建一个Themes1的表,表的内容如图所示:

30cf6e0de233b5e715126154a0f64f47.png.

3:用EF关联所创建的数据库,进行数据映射。 在ThemeMVC项目上右击 Add->New Item.. 选ADO.NET Entity Data Model 改name 为ThemeModel.edmx 点Add添加。出现对话框choose model content,选generate from database 然后点击next,在与哪个数据库连接的对话框中选中ThemeDB.sdf数据库,在Web.Config 里面保存连接名为ThemeDBEntities1,然后点击Next,在这个对话框中选中要作出映射的数据库表,将Tables的Theme1表选中,然后finish结束。 这时在ThemeMVC项目下面多了一个ThemeModel.edmx文件,在ThemeModel.Designer.cs文件中默认生成了实体容器ThemeDBEntities和实体类Themes,

fb0bfd99c4faba9f19379a4f6a13bd17.png

双击ThemeModel.edmx文件,所映射的实体属性如图所示

b3204c239cc9517ffe9e8b45aab877be.png

其中需要注意的是,实体类名默认是与数据库表名相同,我更改了Themes1为Themes。对应的改Name为Themes。Entity Set Name 为实体集的名称,一个实体集含有多个实体类,但是此实例中只有一张数据表。

其中映射表为下图所示:

c1a962f0df650d0173b2af3a1f22260b.png

4. 代码实现。

根据mvc的特性,在Controller下的HomeController页,先写一个构造函数,初始化实体容器实例。

ThemeDBEntities ThemeContext;

public HomeController()

{

ThemeContext = new ThemeDBEntities();

}

第一个页面,即启动页。从Global.asax.cs文件中可以改写启动也面。 默认为Home\Index。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png代码

1 publicclassMvcApplication : System.Web.HttpApplication2 {3 publicstaticvoidRegisterRoutes(RouteCollection routes)4 {5 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");6 7 routes.MapRoute(8 "Default",//Route name9 "{controller}/{action}/{id}",//URL with parameters10 new{ controller="Home", action="Index", id=UrlParameter.Optional }//Parameter defaults11 );12 13 }14 15 protectedvoidApplication_Start()16 {17 AppDomain.CurrentDomain.SetData("SQLServerCompactEditionUnderWebHosting",true);18 19 AreaRegistration.RegisterAllAreas();20 21 RegisterRoutes(RouteTable.Routes);22 }23 }

添加Index.aspx页面。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png代码

1 publicActionResult Index()2 {3 ViewData.Model=ThemeContext.Themes.ToList();//将实体类的记录值转变为强类型4 ViewData["Path"]=ThemeContext.Themes.First().Theme_Path;//默认显示的图片路径为第一条记录的路径5 returnView("Index");6 }

在Index()方法上右击,选Add View... 弹出的对话框如图,add添加即可,页面就存在于目录下Views->Home->Index.aspx  (其他方法的页面也用此方法添加即可)

1f7f2e49a710e1181f6fe106cfc8e2f2.png

Index.aspx页面的代码。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png代码

1 2 3 4 Home Page5 6 7

8

9 Theme 数据操作

10
11
14 主题编号15 17 主题名18 20 主题存放路径21 23 主题元素备注24 26 主题应用IP27 29 31 33 操作34
40 41 43 44 46 47 49 50 52 53 55 56 58 59 61 62
70

71

72 \image\A.jpg73

Edit.aspx页面的html代码

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png代码

1 2 Edit3 4 5 6 16 17

Edit

18 19 Theme_Name:
20
21 Theme_Path:
22
23 Theme_Note:
24
25 Theme_IP:
26
27 28

HomeController页面下的Edit方法:

1 publicActionResult Edit(intID)2 {3 var ThemeEdit=ThemeContext.Themes.First(m=>m.Theme_ID==ID);4 returnView(ThemeEdit);5 }

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png代码

1 [AcceptVerbs(HttpVerbs.Post)]//属性说明: 在Edit.aspx页面提交post后跳转到此方法2 publicActionResult Edit(intTheme_ID, FormCollection form)//FormCollection集合为Edit页面post提交的所有参数集合3 {4 Themes ThemeEdit=ThemeContext.Themes.First(m=>m.Theme_ID==Theme_ID);5 try6 {7 UpdateModel(ThemeEdit);8 ThemeContext.SaveChanges();9 returnRedirectToAction("Page_Load",new{ ThemeEdit.Theme_ID });10 }11 catch(Exception e)12 {13 ModelState.AddModelError("ThemeEdit.Theme_ID",e.Message);14 }15 returnView("Index");16 }

Add.aspx页面的html代码:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png代码

1 2 Add3 --%>4 5 6 7

Add

8 9 Theme_Name:
10 Theme_Path:
11 Theme_Note:
12 Theme_IP:
13 14 15 16

在HomeController下的Add方法。

1 publicActionResult Add()2 {3 returnView();//默认为View("Add")4 }

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png代码

1 [AcceptVerbs(HttpVerbs.Post)]2 publicActionResult Add(FormCollection form)3 {4 Themes th=newThemes();5 ObjectQueryabq=newObjectQuery("select value Max(it.Theme_ID) from Themes as it", ThemeContext);6 if(abq.Sum()==0)7 {8 th.Theme_ID=1;9 }10 else11 {12 th.Theme_ID=abq.Max()+1;13 }14 15 UpdateModel(th);16 if(ModelState.IsValid)17 {18 ThemeContext.AddToThemes(th);19 ThemeContext.SaveChanges();20 returnRedirectToAction("Page_Load",new{th.Theme_ID });21 }22 returnView(abq);23 }

在Index页面的Delete方法:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png代码

1 publicActionResult Delete(intID)2 {3 var ThemeDelete=ThemeContext.Themes.First(m=>m.Theme_ID==ID);4 ThemeContext.DeleteObject(ThemeDelete);5 if(ModelState.IsValid)6 {7 ThemeContext.SaveChanges();8 returnRedirectToAction("Index");9 }10 else11 returnView(ThemeDelete);12 }

在Index页面点击显示图片按钮时用到的show方法

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png代码

1 publicActionResult Show(intID)2 {3 var ThemeShow=ThemeContext.Themes.First(m=>m.Theme_ID==ID);4 ViewData["Path"]=ThemeShow.Theme_Path;5 returnPage_Load(ID);6 }

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png代码

1 staticintNum;2 3 publicActionResult Page_Load(intTheme_ID)4 {5 ViewData.Model=ThemeContext.Themes.ToList();6 ViewData["Path"]=ThemeContext.Themes.First(m=>m.Theme_ID==Theme_ID).Theme_Path;7 returnView("Index");8 }

以上为该练习涉及到的所有代码,实现效果如下。

主页面图:

d08ec12d6e54ad0a9b87f39eae0c2908.png

Add页面图:

194897c72edf2655dacce74e1e26ffc7.png

Edit页面图:

9538b6102adb67058ac61484ad1eb1da.png

到此已经完成了实例练习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值