Entity Framework 4.1 Code First学习之路(一)
前言
公司最近的项目决定使用EF。作为EF的完全新手,写一些学习中的经历和解决的办法,希望老鸟们能不吝赐教。
sample程序使用EF 4.1RC+Spring.Net 1.3.1+ASP.NET MVC3。在CodePlex开源
http://efsample.codeplex.com/
由于使用了其他的开源框架,还是声明一下license为Apache 2.0。实际上只要不违反各个框架的license,本系列代码请随意使用。
需求
先谈一谈项目对ORM的需求
基本需求
- 增删改
- 查
- 一对多
- 多对多
- 可以映射到现有数据库上(有一些命名方面的问题)
- 可以让任意类映射到数据库上(项目允许客户二次开发。最简单的情况下,希望用户只写出类和表结构就可以映射了。这是为什么选择了Code First的主要原因)
- per-request的DbContext生命周期管理。
- 事务
扩展需求
- 一对一
- 领域类继承
- 领域类的依赖注入
这个系列将尝试覆盖以上的大多数问题。
场景
假设我们准备做个游戏,有如下的表结构
实践(一)
作为系列的第一章,我们的目标是:从数据库中取出数据来。像这样
让我们开始第一步:创建领域模型
按照官方blog的aspx" target=_blank>walk through,很容易的写出如下代码。
public class Race : IEntity
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Hero : IEntity
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsSuperHero { get; set; }
public virtual Race Race { get; set; }
}
注意Hero类中的Race属性被定义成了virtual,这是为了延迟加载。但是不同于NH的是,不写virtual不会报错,而是在使用时报出空引用异常。
这里插一句,在领域模型中必须向ORM妥协是让我非常不爽的地方,从使用NH的时候我就非常不喜欢virtual这一点。NH lead Ayende Rahien 推荐了virtuosity,可以尝试一下。
下一步,我们要创建自己的DbContext了
按照官方blog的walk through上的写法,大概会写成
public class EfDbContext : DbContext
{
public DbSet<Hero> Heros { get; set; }
public DbSet<Race> Races { get;&nbs补充:Web开发 , ASP.Net ,
- 更多asp疑问解答:
- asp正则过滤重复字符串的代码
- 用asp过滤全部html但保留br类似的符号
- 会asp,但感觉asp要过点,想学php。但我一般做的都是小公司的站,用access数
- PHP的空间可以用ASP的源代码吗?
- 以前做asp程序,现在应该怎样发展?是学.net还是php
- 以前做asp程序,现在应该怎样发展?是学.net还是php
- 想做一个市级的人才网acess,sql数据库,语言asp,jsp,php分别用哪种好
- jsp,asp,php 区别
- 我想找一个有比较多漏洞的网站的源码,比如可以asp,php注入等都可以。供学习研究用。请提供下载地址。。
- 现在候找人做个网站,用ASP,还是PHP语言去做好
- asp,php ,jsp,.net 对于做网站前台的重要吗?
- asp和php的区别是什么?
- 我是新手SEO菜鸟 请问wp dw php asp cms myspl dede 这些软件应该如何区分呀?
- 网页制作相关的三种语言:ASP JSP PHP那个好点,简单点?
- 网页制作相关的三种语言:ASP JSP PHP那个好点,简单点?
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,