博客园现代化建设——Entity Framework

博客园现代化建设——Entity Framework

在博客园新版博客后台的开发中,为了将园子的现代化建设步伐迈得更大一些,准备装备最先进的武器。之前已经配备ASP.NET MVC 3,目前正在试验刚从微软引进的最新型号新式武器——Entity Framework 4.1 RC。

试验情况分析:

1. 数据库连接字符串的回归

在之前版本的Entity Framework中,微软另搞了一套连接字符串,以至无法直接使用原来的ADO.NET连接字符串。害得我们只能改装它,以重用以前的连接字符串,详见在Entity Framework中重用现有的数据库连接字符串。

在这个版本中,微软终于知错就改,直接使用ADO.NET连接字符串,代码如下:


public

class
BlogDbContext : DbContext
{


public
BlogDbContext()
:

base
(ConfigurationManager.ConnectionStrings[
“
BlogDB
“
].ConnectionString)
{}
}

这样多好,虽然是新式武器,原来的炮弹照样用。

2. 失灵的Entity Data Model

这个不知是VS 2010 SP1还是Entity Framework 4.1 RC的Bug,无法在VS2010中通过Entity Data Model向导创建Entity Data Model。见下图:

2011032210421817.jpg

点击下一步,选择连接字符串的窗口一闪而过…然后什么也没发生,.edm文件也没创建。

难道VS2010在玩捉迷藏的游戏?那就捉呗…终于把它给找出来了,方法是:在VS2010的Server Explorer中删除所有的数据库连接。

2011032210541695.jpg

但是,在创建连接字符串之后,“奇迹”出现了:

2011032210554360.jpg

毕竟就不是正式版,出点Bug也情有可原,而且本来也没指望Entity Data Model,只是想从数据库生成实体类,省点力气。既然它失灵了,那就手写实体类代码呗。

3. 实体类与数据库表的自动映射

1) 自动在实体类中发现“主键”属性,前提是属性名称是ID或者实体类名+ID,比如下面的实体类:


public

class
Blog
{


public

int
BlogID {
get
;
set
; }

public

string
Application {
get
;
set
; }

public

string
Author {
get
;
set
; }

public

string
UserName {
get
;
set
; }
}

Entity Framework会自动发现BlogID就是主键,当然,你也可以通过[Key]指定主键。

2) 如果实体类的属性名与数据库表的字段名相同,不需要任何配置,Entity Framework会自动进行映射。

3) 如果实体类的类名与数据库表的表名相同,不需要任何配置,Entity Framework会自动进行映射。否则,要通过下面的代码进行手工映射:


public

class
BlogDbContext : DbContext
{


protected

override

void
OnModelCreating(DbModelBuilder modelBuilder)
{

modelBuilder.Entity

<
Blog
>
().ToTable(
“
blog_Config
“
);
}
}

注:Blog是实体类名,blog_Config是数据库表名。

如果符合自动映射的条件,使用Entity Framework很方便,只要在数据访问层添加Entity Framework的引用,并添加一个继承自DbContext的类,然后就可以随时随地使用。

试验结论:

该武器虽然有部件失灵,但总体来说携带方便,部署灵活,自动化程度高,是现代化建设的必备!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110640.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • node.js安装及环境变量配置

    node.js安装及环境变量配置前言本文详细讲解了node.js压缩包版安装配置过程,配置安装时间在十分钟左右。下载node.js下载并解压好node.js,本文下载的是v8.11.1windows64位版本。配置node与npm1.打开NodeJs文件目录,如下图:2.在NodeJs文件目录下建立”node_global“及”node_cache“两个文件夹3.启动…

    2022年6月14日
  • linuxchmod用法_chmod 指定用户

    linuxchmod用法_chmod 指定用户chmod—-改变一个或多个文件的存取模式(mode)chmod[options]modefiles只能文件属主或特权用户才能使用该功能来改变文件存取模式。mode可以是数字形式或以whoopcodepermission形式表示。who是可选的,默认是a(所有用户)。只能选择一个opcode(操作码)。可指定多个mode,以逗号分开。

    2022年10月20日
  • vue关闭eslint检查_vue 校验规则 提取

    vue关闭eslint检查_vue 校验规则 提取在创建项目时,手贱点击了yes。那么怎样关闭Eslint验证呢?1.打开build\webpack.base.conf.js2.找到如下代码,并ctrl点击红框框起的代码3.修改useEslint:true,为false4.最后,在修改完配置文件之后,在终端输入nmprundev。这一点非常重要,我就是没有漏了这步操作,弄了很久。…

    2022年10月8日
  • Java核心知识点精心整理(全是精华)「建议收藏」

    Java核心知识点精心整理(全是精华)「建议收藏」我不是针对谁,我是说其它面试题都是辣鸡

    2022年9月1日
  • 分别了解offsetWidth,clientWidth,scrollWidth和-Height

    分别了解offsetWidth,clientWidth,scrollWidth和-HeightThereareseveralquestionsonStackOverflowregardingoffsetWidth/clientWidth/scrollWidth(and-He

    2022年7月22日
  • TOF相机-非扫描三维成像

    TOF相机-非扫描三维成像飞行时间法(TOF)3D成像,是通过给目标连续发送光脉冲,然后用传感器接收从物体返回的光,通过探测光脉冲的飞行(往返)时间来得到目标物距离。这种技术跟3D激光传感器原理基本类似,只不过3D激光传感器是逐点扫描,而TOF相机则是同时得到整幅图像的深度信息;TOF相机与普通机器视觉成像过程也有类似之处,都是由光源、光学部件、传感器、控制电路以及处理电路等几部

    2022年5月26日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号