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

  • 相关阅读:
    JAVA 线程安全与同步机制
    JAVA 多线程
    el-table 宽度自适应bug
    详解迭代器Iterator
    理解基本类型的溢出
    理解classpath
    I/O(一):基础知识
    C++: 智能指针
    C++: 值类别与移动语义基础
    CUDA 架构与编程概述
  • 原文地址:https://www.cnblogs.com/birdshover/p/1298184.html
Copyright © 2020-2023  润新知