EF CodeFirst学习】的更多相关文章

EF CodeFirst 真是时光如梦,岁月如歌,自己一不留神就被后浪拍在了沙滩上,就连我要学的这个东西也是12年就在博客园很火了. EF有三种开发模式,DatabaseFirst, ModelFirst,CodeFirst,我前两种都用过,CodeFirst以前只是听说过,但从来没用过,最新下了一些开源项目,打开发现看不懂,不得不继续学习: 创建学生类 public class Student { public int StudentId { get; set; } public string…
Code First中有三种不同的方法表示继承层次关系 1.Table per Hierarchy (TPH): 这种方法建议用一个表来表示整个类的继承层次关系,表中包含一个识别列来区分继承类,在EntityFramework中,这是默认的实现   类与数据库表的映射最简单的策略应该是:每个持久类对应一张表.这种方法听起来很简单,继承是一个可见的结构之间的不匹配的面向对象和关系世界,因为面向对象系统模型都是“is a”和“has a”的关系. SQL中的实体关系都是“has a”的关系.SQL数…
协定是一系列的默认规则用来自动配置领域中的概念模型 1:类型发现 Code-First对包含DBSet属性的类型创建表(包括这些类型的所有引用类型) public class Student { public Student() { } public int StudentID { get; set; } public string StudentName { get; set; } public DateTime DateOfBirth { get; set; } public byte[]…
将BlogTypes注释掉,但因为Blogs中定义了BlogType 这样类型的属性,所以Ef会聪明的找到BlogType类. public class BlogEntities:DbContext { static BlogEntities() { Database.SetInitializer(new DropCreateDatabaseIfModelChanges<BlogEntities>()); } public DbSet<Blog> Blogs { get; set;…
Code First 的核心是约定,这些默认的规则使我们可以用我们自己的类来创建模型.EF框架要求一个类必须有一个键属性.规则约定如果一个属性名为Id或者是类名+Id的形式(如PatientId),这一属性就被自动配置为键.如果无法找到满足这一规则的属性,将会在运行时抛出一个异常告诉你没有找到Key.其他约定包括确定字符串的默认长度,或者默认表结构,以及当类相互继承时如何在数据库内建表等等. 代码:红色部分为主键 public class TestUser { public int TestUs…
1对1.1对0 的关系 例如:Entity1与零个或一个Entity2的实例有关系 public class Student { public Student() { } public int StudentId { get; set; } public string StudentName { get; set; } public virtual StudentAddress Address { get; set; } } public class StudentAddress { publi…
数据注解:配置选项的子集:Fluent API包含所有选项 System.ComponentModel.DataAnnotations Attributes: Attribute Description Key 标记实体的属性映射到数据库表中的主键 Timestamp 标记助兴为不可空的时间戳列(行版本) ConcurrencyCheck 标记一个或多个属性做并发检查(当用户编辑或删除数据的时候)  Required 属性必须有值 MinLength 设置属性类型为数组或字符串的最小长度 Max…
什么是Code-First 基本工作流: 写好应用程序的领域类和上下文类→配置领域类的额外映射→运行程序→Code-First API创建新的数据库或与现有数据库对应→添加种子数据到数据库中测试…
参考: http://www.cnblogs.com/Wayou/archive/2012/09/20/EF_CodeFirst.html webconfig中修改: <connectionStrings>     <add name="BlogEntities" connectionString="server=gwsite4;database=EfStudy;integrated security=false;User ID=sa;Password=te…
BlogEntities这个类从DbContext继承,负责数据库的更新. Database.SetInitializer(new DropCreateDatabaseIfModelChanges<BlogEntities>()); 这段代码表示:当具体的类发生变化时将重新删除现有的数据库,重新生成新的数据库. 测试: 修改TestUser类中的TestUserName为updateUserName 执行程序 TestUsers表字段为updateUserId(重新创建的新表) Blogs表原…