博客园现代化建设——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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PyCharm 2021.10.3 激活码(JetBrains全家桶)[通俗易懂]

    (PyCharm 2021.10.3 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月27日
    56
  • linux搭建开源ldap服务器方法

    linux搭建开源ldap服务器方法1.什么是ldap服务器ldap是统一认证服务,它的优点是存储用户认证等不经常改变的信息,有清晰的组织结构。ldap条目概念:基准DN,例如dc=company,dc=com,DN,例如cn=test,dc=company,dc=com,一个DN就是一个条目,RDN是相对DN,具有唯一性,上面例子的DN的RDN就是cn=test2.下载openldapopenld…

    2022年5月15日
    41
  • RabbitMQ流控-FLow Control

    RabbitMQ流控-FLow Control当Connection发布消息的速度太快,队列无法跟上(消费速度低于生产速度),RabbitMQ会降低Connection的速度,无需配置。流控的Connection可以在rabbitmqctl、管理UI和HTTPAPI响应中显示flow状态。这意味着连接每秒要经历多次阻塞和解除阻塞,以便将消息传入的速度保持在服务器其他部分(例如,将这些消息路由到的队列)能够处理的速度。一般来说,处于流…

    2022年5月27日
    87
  • SPSS中如何进行快速聚类分析「建议收藏」

    SPSS中如何进行快速聚类分析「建议收藏」作为广受数据分析师青睐的一款数据统计和分析软件,IBMSPSSStatistics中有全面的数据分析方法,今天我们要介绍的是它的聚类分析中的快速聚类分析。一、方法概述聚类分析是将研究对象按照一定的标准进行分类的方法,分类结果是每一组的对象都具有较高的相似度,组间的对象具有较大的差异。这类分析方法多用于对于数据样本没有特定的分类依据的情况,IBMSPSSStatistics会通过对数据的观察为用户做出较为完善的分类。图1:功能位置快速聚类是聚类分析的一种,使用到的功能在“分析”

    2022年10月17日
    3
  • Java程序员如何从码农晋升为架构师,你跟架构师的差别在哪里?

    Java程序员如何从码农晋升为架构师,你跟架构师的差别在哪里?一、如何定义架构师Java架构师,首先要是一个Java程序员,熟练使用各种框架,并知道它们实现的原理。jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;池技术,什么对象池,怎么解决并发量、连接池,线程池。Java反射技术,写框架必备的技术,但是有严重的性能问题,替代方案Java字节码技术;nio,没什么好说的,值得注意的是”直接内存”的特点,使用场景;java多线程同步异步;ja…

    2022年7月8日
    80
  • python win32api sendmessage_Python win32api.SendMessage方法代码示例[通俗易懂]

    python win32api sendmessage_Python win32api.SendMessage方法代码示例[通俗易懂]#需要导入模块:importwin32api[as别名]#或者:fromwin32apiimportSendMessage[as别名]defclick(self,coords,button=”left”,hold=False):”””Args:coords(touple):coordstakestwoarguments,eitherbothfloato…

    2022年10月10日
    2

发表回复

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

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