zoukankan      html  css  js  c++  java
  • 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文件中也能看个大概。其它就不多说了,还是你自己去尝试吧,用这个东西做个数据库管理的后台实在是太简单了,太简单了。

  • 相关阅读:
    1048 石子归并
    高精度算法小结
    3117 高精度练习之乘法
    UVa 11809
    3115 高精度练习之减法
    3116 高精度练习之加法
    “da shen” in my heart
    爱是怀疑!
    普通disco
    崇拜
  • 原文地址:https://www.cnblogs.com/birdshover/p/1298184.html
Copyright © 2011-2022 走看看