01 2013 档案
摘要:控制数据库的位置默认情况下,数据库是创建在localhost\SQLEXPRESS服务器上,并且默认的数据库名为命名空间+context类名,例如我们前面的BreakAway.BreakAwayContext。有几种方法可以改变这种默认约定。利用配置文件在配置文件中新加一个连接字符串 <connectionStrings> <add name="BreakAwayContext" providerName="System.Data.SqlClient" connectionString="Server=.\SQLEXPRESS
阅读全文
摘要:多个实体映射到一张表Code First允许将多个实体映射到同一张表上,实体必须遵循如下规则:实体必须是一对一关系实体必须共享一个公共键观察下面两个实体: public class Person { [Key] public int PersonId { get; set; } public int SocialSecurityNumber { get; set; } public string FirstName { get; set; } public string LastName { get; set; ...
阅读全文
摘要:使用Data Annotations:如果我们要到一对主从表增加级联删除,则要在主表中的引用属性上增加Required关键字,如: public class Destination { public int DestinationId { get; set; } public string Name { get; set; } public string Country { get; set; } public string Description { get; set; } public byte[] Photo {...
阅读全文
摘要:一对多关系项目中最常用到的就是一对多关系了。Code First对一对多关系也有着很好的支持。很多情况下我们都不需要特意的去配置,Code First就能通过一些引用属性、导航属性等检测到模型之间的关系,自动为我们生成外键。观察下面的类:View Code public class Destination { public int DestinationId { get; set; } public string Name { get; set; } public string Country { get; set; } publi...
阅读全文
摘要:什么是并发?并发分悲观并发和乐观并发。悲观并发:比如有两个用户A,B,同时登录系统修改一个文档,如果A先进入修改,则系统会把该文档锁住,B就没办法打开了,只有等A修改完,完全退出的时候B才能进入修改。乐观并发:同上面的例子,A,B两个用户同时登录,如果A先进入修改紧跟着B也进入了。A修改文档的同时B也在修改。如果在A保存之后B再保存他的修改,此时系统检测到数据库中文档记录与B刚进入时不一致,B保存时会抛出异常,修改失败。EF中如何控制并发?Entity Framework不支持悲观并发,只支持乐观并发。如果要对某一个表做并发处理,就在该表中加一条Timestamp类型的字段。注意,一张表中只能
阅读全文
摘要:在EF中,我们建立数据模型的时候,可以给属性配置数据生成选项DatabaseGenerated,它后有三个枚举值:Identity、None和Computed。Identity:自增长None:不处理Computed:表示这一列是计算列。在EF中,如果主键是int类型,Code First生成数据库的时候会自动设置该列为自增长。但如果主键是Guid类型,我们就要手动的去设置了。对于下面的模型,如果我们没有设置自增长,数据库中会以0来填充 public class Person { [Key] public Guid SocialSecurityNumber {...
阅读全文
摘要:为了说明什么是复杂属性,先举一个例子。 public class CompanyAddress { public int ID { get; set; } public string CompanyName { get; set; } public string StreetAddress { get; set; } public string City { get; set; } public string State { get; set; } public string ZipCode { get;...
阅读全文
摘要:要更改EF中的默认配置有两个方法,一个是用Data Annotations(在命名空间System.ComponentModel.DataAnnotations;),直接作用于类的属性上面;还有一个就是Fluent API,通过新增相应的配置类来覆盖默认配置。现在我们用这两个来对比了解EF中的约定配置。主键:KEYData Annotations:通过Key关键字来标识一个主键[Key]public int DestinationId { get; set; }Fluent API:public class BreakAwayContext : DbContext { pu...
阅读全文
摘要:Code First是Entity Framework提供的一种新的编程模型。通过Code First我们可以在还没有建立数据库的情况下就开始编码,然后通过代码来生成数据库。下面通过一个简单的示例来了解。建立一个控制台项目。通过Nuget来获取Entity Framework。增加两个模型类: public class Destination { public int DestinationId { get; set; } public string Name { get; set; } public string Country { get; ...
阅读全文