博客园现代化建设——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的类,然后就可以随时随地使用。

试验结论:

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Java getinstance(java如何实现输入)

    1.背景实际中经常使用getInstance()方法返回一个对象,对于工厂模式,传入对应的参数返回与之相对应的对象.但是,问题来了,返回的对象需要被强制转换,很麻烦.importjava.lang.reflect.*;publicclasstest{publicstaticvoidmain(String[]args){test1t1=factory.getInstance(“…

  • pandas groupby 用法详解

    pandas groupby 用法详解1.分组groupby在日常数据分析过程中,经常有分组的需求。具体来说,就是根据一个或者多个字段,将数据划分为不同的组,然后进行进一步分析,比如求分组的数量,分组内的最大值最小值平均值等。在sql中,就是大名鼎鼎的groupby操作。pandas中,也有对应的groupby操作,下面我们就来看看pandas中的groupby怎么使用。2.groupby的数据结构首先我们看如下代码defddd():levels=[“L1″,”L1″,”L1″,”L2″,”L2″,”L3”,

  • 从入门到真香!java核心技术卷一pdf「建议收藏」

    从入门到真香!java核心技术卷一pdf「建议收藏」拼多多(三面)面试前面完蚂蚁后,早就听闻拼多多这个独角兽,决定也去面一把。首先我在脉脉找了一个拼多多的HR,加了微信聊了下,发了简历便开始我的拼多多面试之旅。这里要非常感谢拼多多HR小姐姐,从面试内推到offer确认一直都在帮我,人真的很nice。拼多多:一面为啥蚂蚁只待了三个月?没转正?Java中的HashMap、TreeMap解释下?TreeMap查询写入的时间复杂度多少?HashMap多线程有什么问题?CAS和synchronize有什么区别?都用synchronize不行么?如

  • 关于ScriptManager.RegisterStartupScript 摘录

    关于ScriptManager.RegisterStartupScript 摘录参数备注:使用 RegisterStartupScript 方法,可为与部分页面呈现兼容且不具有MicrosoftAJAXLibrary依赖项的页面注册启动脚本块。仅

  • linux futex浅析[通俗易懂]

    linux futex浅析[通俗易懂]Futex,FastUserspacemuTEXes,作为linux下的一种快速同步(互斥)机制,已经存在了很长一段时间了(sincelinux2.5.7)。它有什么优势?又提供了怎样一些功能,本文就简单探讨一下。futex诞生之前在futex诞生之前,linux下的同步机制可以归为两类:用户态的同步机制和内核同步机制。用户态的同步机制基本上就是利用原子指令实现的spinlock。最简单的实现就是使用一个整型数,0表示未上锁,1表示已上锁。trylock操作就利用原子指令尝试将0改为1

  • python取整符号_python 取整「建议收藏」

    广告关闭腾讯云11.11云上盛惠,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!(1)向下取整向下取整很简单,直接使用int()函数即可,如下代码(python2.7.5idle)a=3.75int(a)3(2)四舍五入第二种就是对数字进行四舍五入,具体的看下面的代码:a=3.25;b=3.75round(a);round(b)3.0…

发表回复

您的电子邮箱地址不会被公开。

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