在博客园新版博客后台的开发中,为了将园子的现代化建设步伐迈得更大一些,准备装备最先进的武器。之前已经配备ASP.NET MVC 3,目前正在试验刚从微软引进的最新型号新式武器——Entity Framework 4.1 RC。
试验情况分析:
1. 数据库连接字符串的回归
在之前版本的Entity Framework中,微软另搞了一套连接字符串,以至无法直接使用原来的ADO.NET连接字符串。害得我们只能改装它,以重用以前的连接字符串,详见在Entity Framework中重用现有的数据库连接字符串。
在这个版本中,微软终于知错就改,直接使用ADO.NET连接字符串,代码如下:
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。见下图:
点击下一步,选择连接字符串的窗口一闪而过…然后什么也没发生,.edm文件也没创建。
难道VS2010在玩捉迷藏的游戏?那就捉呗…终于把它给找出来了,方法是:在VS2010的Server Explorer中删除所有的数据库连接。
但是,在创建连接字符串之后,“奇迹”出现了:
毕竟就不是正式版,出点Bug也情有可原,而且本来也没指望Entity Data Model,只是想从数据库生成实体类,省点力气。既然它失灵了,那就手写实体类代码呗。
3. 实体类与数据库表的自动映射
1) 自动在实体类中发现“主键”属性,前提是属性名称是ID或者实体类名+ID,比如下面的实体类:
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会自动进行映射。否则,要通过下面的代码进行手工映射:
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账号...