CodeFirst体验之且行且珍惜
CodeFirst作为一种新的开发理念和方式,EF Code-First相对于MVC中的DataFirst,ModelFirst确实开发效率确实高点,至少数据库建表这一块,直接用类映射到数据中,标记在前面都是看的愉悦和方便,理论知识不是很擅长,还是写写实践吧,个人的学习的一点分享~
简单点建立就是学生和学校,一对一的对应关系
1.建立Model和继承自DbContext的类MyContext
public class MyContext:DbContext{public MyContext(): base("name=MyCodeFirst"){ }public DbSet<Student> Students { get; set; }public DbSet<School> Schools { get; set; }}public class Student{public int Id { get; set; }public string StuName { get; set; }public int Age { get; set; }public School School { get; set; }}public class School{public int Id { get; set; }public string SchoolName { get; set; }public string Address { get; set; }}
2.在APP.Config配置文件中配置数据库连接字符串,默认的连接的是localDB数据中,不是很习惯使用~
第一个对应的MyContext中的name的名字,第二个是要生成的数据库的名字,访问数据的驱动名称.
3.关键一步----写程序,其实就三句话~
static void Main(string[] args){MyContext dbConext = new MyContext();var student=new Student(){StuName="keso",Age=24,School=new School(){SchoolName="农大",Address="江西"}};dbConext.Students.Add(student);dbConext.SaveChanges();Console.WriteLine("CodeFirst体验成功~");Console.ReadLine();}
4.最终的结果:
5.以上一步步的进行下去应该是没有问题的,如果Model中Student加一个属性Height会怎么样呢?
这个时候我们应该做的事情就是数据迁移了,听上去感觉很吊的样子,英文是Migrations,其实操作起来就是几行命令~
在VS2012工具→库程序包管理器→程序包管理器控制台
输入三个命令:
1)Enable-Migrations 按下enter键之后就会扫描数据中所有的上下文,可以选中其中的一个就行迁移,我写的Demo就一个上下文,使用这个命令没问题
如果有多个的话可以 使用 Enable-Migrations -ContentType
namespace...上下文名称
2)第一步做完之后只需要会生成一个文件夹,有两个文件,一个是根据时间命名继承自DbMigration的初始文件,第二个就是Configuration配置文件,需要执行一个命令
Add-Migration(注意这个没有s) AddHeight(这个可以自己命名)
3)最后执行的一个命令 Update-Database
执行完之后就可以随便更改模型映射到数据库中.看下结果吧:
关于CodeFirst这个来说,有些用的CTP5这个框架,参考过的文章,不过发现一个很多,很多博客园上的CodeFirst的文章就是原版的Msdn的介绍内容,感觉有点失望.
http://msdn.microsoft.com/zh-cn/gg981915
http://www.cnblogs.com/zhanghonjiang2011/archive/2012/04/26/2471528.html
http://blogs.msdn.com/b/jason_zander/archive/2012/07/30/entity-framework-code-first-asp-net-web-api.aspx
http://msdn.microsoft.com/zh-CN/data/jj193542
都这么晚了,妹子都睡了,我脸还没洗,随机分享一个其他的CodeFirst的内容DevExpress中使用CodeFirst的方式,以前的笔记:
class Program { static void Main( string[] args) { Session.DefaultSession.ConnectionString = "Data Source=.;Initial Catalog=XPOTest;Integrated Security=true"; //一对多的保存关系 User user = new User(); user.FirstName = "思思" ; user.LastName = "李" ; Address a1 = new Address(); a1.Local = "广西省" ; Address a2 = new Address(); a2.Local = "桂林市" ; user.Addresses.Add(a1); user.Addresses.Add(a2); user.Save(); Console.WriteLine( "有些东西结束就就真的结束啦 ,是不可以挽回的 "); Console.ReadKey(); } } class User : XPObject { public string FirstName; public string LastName; [ Association("User-Address" ,typeof (Address )),Aggregated ] public XPCollection Addresses { get { return GetCollection( "Addresses"); } } } class Address : XPObject { public string Local; [ Association("User-Address" )] public User User; }最终生成的结果图如下所示,添加之后自动保存了Address的数据:
这个属于随机附赠的,需要安装一下DevExpress的程序,然后在项目中就可以饮用Dev的程序集,就可以继承XPOObject,类似于微软现在的DbContext.转载于:https://www.cnblogs.com/xiaofeixiang/p/3614999.html
总结
以上是生活随笔为你收集整理的CodeFirst体验之且行且珍惜的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: fzu 2139 久违的月赛之二
- 下一篇: 寻找区域中有几个点 叉乘+二分 p