博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EntityFramework用法探索(二)CodeFirst
阅读量:6839 次
发布时间:2019-06-26

本文共 2586 字,大约阅读时间需要 8 分钟。

Code First,顾名思义,要先写Code,而不是先建立数据库内容。

同样使用与上文 相同的例子,假设需要设计一个零售系统,我们先构建一个 Customer 类。

1   [Table("Customer", Schema = "STORE")] 2   public class Customer 3   { 4     [Key] 5     [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 6     public long Id { get; set; } 7     public string Name { get; set; } 8     public string Address { get; set; } 9     public string Phone { get; set; }10   }

通过使用TableAttribute来指定数据表名称和使用的SchemaName。

通过KeyAttribute来指定表主键,并通过DatabaseGeneratedAttribute来指定该主键为自增字段。

构建访问上下文,

1   public class RetailEntities : DbContext 2   { 3     static RetailEntities() 4     { 5       //Database.SetInitializer
(new CreateDatabaseIfNotExists
()); 6 //Database.SetInitializer
(new DropCreateDatabaseAlways
()); 7 //Database.SetInitializer
(new DropCreateDatabaseIfModelChanges
()); 8 Database.SetInitializer
(null); 9 }10 11 public RetailEntities()12 : base("Name=RetailEntities")13 {14 }15 16 public DbSet
Customers { get; set; }17 }

其中包含了几种数据库初始化选项,

  • CreateDatabaseIfNotExists 如果数据库不存在则创建。
  • DropCreateDatabaseAlways 总是先删除已有数据库并创建新的。
  • DropCreateDatabaseIfModelChanges 判断如果模型有修改在重建数据库。

同时需要在配置文件中指定数据库访问字符串,

这样,就可以构建同样的增删改查功能了。参考上文中定义个ICustomerRepository接口。

1     public void InsertCustomer(DomainModels.Customer customer) 2     { 3       using (RetailEntities context = new RetailEntities()) 4       { 5         Customer entity = Mapper.Map
(customer); 6 context.Customers.Add(entity); 7 context.SaveChanges(); 8 9 customer.Id = entity.Id;10 }11 }12 13 public void UpdateCustomer(DomainModels.Customer customer)14 {15 using (RetailEntities context = new RetailEntities())16 {17 Customer entity = context.Customers.AsQueryable().Single(c => c.Id == customer.Id);18 19 entity.Name = customer.Name;20 entity.Address = customer.Address;21 entity.Phone = customer.Phone;22 23 context.SaveChanges();24 }25 }

具体使用,

1       ICustomerRepository customerRepository = new CustomerRepository(); 2  3       // =============== 增 =============== 4       Console.ForegroundColor = ConsoleColor.DarkRed; 5  6       DomainModels.Customer customer1 = new DomainModels.Customer() 7       { 8         Name = "Dennis Gao", 9         Address = "Beijing",10         Phone = "18888888888",11       };12       customerRepository.InsertCustomer(customer1);13       Console.WriteLine(customer1);

完整代码和索引

EntityFramework用法探索系列

转载地址:http://powul.baihongyu.com/

你可能感兴趣的文章
如果利用xjplugin编写基于web的应用系统
查看>>
ExpandableListActivity的使用
查看>>
C#, XML中有中文加载出错问题的处理
查看>>
Java那些事之正则表达式
查看>>
SQL Server T-SQL高级查询
查看>>
JSON在PHP中的应用
查看>>
判断是否联网
查看>>
私有化构造方法
查看>>
HDU 2802 找单词
查看>>
Wordpress XML-RPC协议说明
查看>>
开发者需知:优秀程序设计的18大原则
查看>>
半天打造小型万能OA办公系统, 靠的就是万能表单提交 + 轻量级工作流审批组件...
查看>>
Win7修改文件后缀名
查看>>
DIV外区域Click后关闭DIV
查看>>
后缀数组学习笔记——罗穗骞倍增算法代码
查看>>
Automating Capistrano Password Prompts with Expect
查看>>
用 HTML5 和 Javascript 仿制一个水果忍者网页版! (直接浏览器在线玩+源代码下载)...
查看>>
设计模式简介
查看>>
删除数组中某一匹配项
查看>>
Sharepoint学习笔记—error处理-- The user does not exist or is not unique.
查看>>