EF实体框架之CodeFirst二】的更多相关文章

在codefirst一中也说了Mapping是实体与数据库的纽带,model通过Mapping映射到数据库,我们可以从数据库的角度来分析?首先是映射到数据库,这个是必须的.数据库里面一般包括表.列.约束.主外键.级联操作.实体关系(E-R图).存储过程.视图.锁.事务.数据库结构更新等.在接下来的日子里,通过数据库的这些名词,来学习C#是如何实现或者调用它们来通过代码操作数据库. 在code first一中主要是学习了对数据库的映射,今天主要是学习表的映射.一个model映射一个表,多个modl…
在EF实体框架之CodeFirst二中也提到数据库里面一般包括表.列.约束.主外键.级联操作.实体关系(E-R图).存储过程.视图.锁.事务.数据库结构更新等.前面几篇博客把表.存储过程.视图这些算是总结了一下,这篇的话主要总结下基本的约定类型. 1.主键 在数据库中主键是必不可少的,一般主键有业务主键和逻辑主键,而且主键有的还是联合主键在code first中也可以通过约定的形式映射到数据库——[Key]. [Key] public int ProductID { get; set; } 默认…
对于SQL Server.MySql.Oracle等这些传统的数据库,基本都是关系型数据库,都是体现实体与实体之间的联系,在以前开发时,可能先根据需求设计数据库,然后在写Model和业务逻辑,对于Model类基本都是和表的字段对应着,而表中存的每条记录又和类的实例对象对应着,有了这个对照关系,就是能不能只在一边设计,在数据库设计表或在VS中设计Model,然后直接生成另一边,这样就省了好多时间成本.于是有了ORM,Object Relation Mapping,对象关系映射.既然可以根据Mode…
上一博客学习了下基本的约定配置,留下几个遗漏的,这篇就是学习下遗漏一复杂类型. 一.什么是复杂类型? 书中说道:“复杂类型也可视作值类型(?)可以作为附加属性添加到其他类.复杂类型与实体类型的区别在于复杂类型没有其自己的键.它是依赖于其"宿主"类型跟踪变化 和持久化.一个没有Key属性的类型,并且作为属性映射到一个或多个类型中,Code First就会将其视作为复杂类型.Code First将预设复杂类型的属性出现在宿主类型映射到数据库的表中.” 说简单一点就是,项目中有个类A,这个A…
前面的6篇博客基本把Code First学习的差不多了,今天这篇学习下code first中的并发控制和事务,基本也快学完了,顶多就差数据迁移. 在数据库中也是有锁和事务的概念,在C#中也是存在,当然code first也是必要要有的.对于什么是并发.什么是锁和事务,它们的特性是什么这些概念性的就不一一列举.因为这些要是发散的学习就涉及到好多的知识点.并发能联想到多线程,多线程能联想到同步异步,同步异步操作系统,等等.知识都是连贯着的.有了并发那就有不并发的情况,想让不并发,那用什么呢?那就要用…
上午的时候把复杂类型学习了一下,想着趁着周六日把Code First学习完,所以下午还是把Code First中的关系学习下.在数据库中最重要的恐怕就是E-R图了,E-R体现了表与表直接的关系.使用Code First也需要把这种表与表直接的关系映射到数据库中,所以关系映射在Code First中也是很重要的一节.Code First中主要包括一对一.一对多.多对多. 一.外键列名默认约定 Entity Framework Code First在根据默认约定创建外键时,外键列的名称存在3种方式:…
前两篇博客学习了数据库映射和表映射,今天学习下数据库初始化.种子数据.EF执行sql以及执行存储过程这几个知识. 一.数据库初始化策略 数据库初始化有4种策略 策略一:数据库不存在时重新创建数据库 Database.SetInitializer<EFCodeFirstDbContext>(new CreateDatabaseIfNotExists<EFCodeFirstDbContext>()); 策略二:每次启动应用程序时创建数据库 Database.SetInitializer…
前面七篇基本把Code First学习了一下,不过code first中会出现一个问题,就是数据迁移的问题. 一.数据准备 还是在前面的demo上修改,这次使用Province和City类. public class Province { [Key] public string ProvinceId { get; set; } public string ProvinceName { get; set; } public virtual ICollection<City> Citys { ge…
导读:在之前,我们学过了三层框架,即:UI.BLL.DAL.我们将页面显示.逻辑处理和数据访问进行分层,避免了一层.两层的混乱.而后,我们又在经典三层的基础上,应用设计模式:外观.抽象工厂+反射,使得经典三层演变为了七层,在一定程度上降低了U层和B层,B层和D层的耦合. 可是,怎样解决D层和数据库之间的耦合?在三层操作中,D层都是直接访问数据库而对数据进行操作,在面向对象的应用中,这似乎显得不太合理,所以,我们应用了EF框架,解决了D层和数据库之间的耦合(这在之前已经说明过了).在三层中,我们应…
一.知识回顾 到目前为止,自己学到的链接数据库操作已经经历了几个阶段,分别是:学生信息管理和(第一次)机房收费时的直接连接数据库操作表格,然后是机房个人重构中应用的操作实体,在其中还利用了一个很重要的帮助类:SQLHelper. 在这个转变中,已经逐步由面向过程转向面向对象,但在分层操作实体的过程中,由于数据库的设计不很完美,有时候需要修改数据库设计,或者需要更改实体.每次遇到这样的事儿,就脑袋疼,因为数据库和实体必须要对应起来,不然问题就越改越大了. 那么怎样解决这一问题呢?最近学习了一个EF…