VS2008 SP1之“动态数据 Web 应用程序”——管理数据库太容易了!

原本我以为安装了VS2008 SP1,内置了ADO.NET Entity Framework,MVC框架什么的,结果ADO.NET Entity Framework是有,但是MVC没有,却意外的有另外一个东西——动态数据 Web 应用程序。如图1.

 


图1

好奇地创建了个“动态数据实体 Web 应用程序”。如图2.


图2

给我的第一感觉是,MVC换名字了?不应该吧!于是打开Global.asax文件看看是不是和MVC一样。如代码1.

 

代码1

 

感觉太像了,太神奇了,MVC换名字了?于是在IIS上添加了该站点,访问报“没有可访问的表。确保在 Global.asax 中注册了至少一个数据模型并启用了支架,或者实现自定义页面。”错误。肯定是没有设置数据的原因,现在发愁了,到底怎么设啊,只知道是在Global.asax里设置。

找到报错的地方,在Default.aspx.cs文件中,如代码2.

 

代码2

 

估计是在Global.asax里设置Metamodel的数据库连接了。转到Global.asax文件。看到注释里有“重要: 数据模型注册”。取消第29行

//model.RegisterContext(typeof(YourDataContextType), new ContextConfiguration() { ScaffoldAllTables = false });

语句的注释。typeof(YourDataContextType)这里像是什么?很想Linq To Sql的名字***DataContext是不是?呵呵,建立一个Linq To Sql模型。然后把Linq To Sql的上下文注册到这里来。报错了,错误是,无法把Linq To Sql的DataContext转换到System.Data.Objects.ObjectContext类型。想起来ADO.NET Entity Framework也有这东西,于是创建一个。

根据向导生成文件后,得到一个设计界面。如图3.

图3

 

图非常漂亮,呵呵。不管它,把YourDataContextType替换为创建的上下文。

model.RegisterContext(typeof(NShip.DAL.NShipEntities), new ContextConfiguration() { ScaffoldAllTables = false });

编译后访问,报错,调试一下发现MetaModel里有表了但是没有可见表。就是MetaModel.Default.Tables有现在数据库里的表了,但是MetaModel.Default.VisibleTables没有数据。可以通过循环的方式把MetaModel.Default.Tables里的表填充到MetaModel.Default.VisibleTables里,还可以让不想填充进去的不进去。而如果要全部指定,设置上面代码的ScaffoldAllTables = false 换成 ScaffoldAllTables = true。OK,再访问,出现图4:

注意:如果在另外一个项目中创建ADO.NET Entity Framework数据库映射,那么需要在WEB项目中引用System.Data.Entity.

图4

图4显示的表名就是我数据用ADO.NET Entity Framework映射的表。现在点开一个查看,如图5。

图5

看看浏览器上的地址,是被重写过的,看来和MVC还是有点联系的地方。而重写的方法,刚才在Global.asax文件中也能看个大概。其它就不多说了,还是你自己去尝试吧,用这个东西做个数据库管理的后台实在是太简单了,太简单了。

posted @ 2008-09-24 16:51  Birdshover  阅读(7387)  评论(20编辑  收藏  举报