Entity Framework使用心得
来源:互联网 发布:上海知杰公关策划 编辑:程序博客网 时间:2024/05/16 08:38
首先最给力的教程附上:www.entityframeworktutorial.net
其实照着教程一步一步来的。
首先建立Email类。然后再该类最下面写一个相应的Context类,并且一开始我就用的 :base("数据库名字")。然后就可以直接运行了。其实数据库会新建到默认的connectionString里。那么默认的connectionString在哪里呢?其实并不在我的类库project的app.config当中,而是在我的启动project的app.config当中。
<entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> <parameters> <parameter value="mssqllocaldb" /> </parameters> </defaultConnectionFactory> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> </providers> </entityFramework>
所以其实就是 (localdb)\mssqllocaldb的数据库中。但是有很多人说在 (localdb)\v11.0或者在 (localdb)\sqlexpress中,这都是有可能的,如果他安装了Express的话。
还有一种方法可以知道到底存到哪里去了,那就是查看本地的实例有哪些。
巨坑爹的是x64的程序会有问题,查了一下,确实有问题=_=||,详见:http://entityframework.codeplex.com/workitem/2273
所以就把所有x64的程序在解决方案的属性设置里build的勾勾都去掉了。
然后成功了。数据库里有数据了。
但是到了公司电脑上就完蛋了。原因是我当时不太会migration,总是依赖于开启自动迁移。但是自动迁移他不work!!!
不过后来学会了怎么迁移。其实也弱智的。
首先我在consoleTest的工程(启动工程)的App.config当中设置好我的connectionString,然后把DBContext继承的基类的构造函数里的参数改成了:base("name=xxxxconnectionString")要和config当中的一致。
下面注释掉的是我以前的,没注释的是改过了的,此时localhost存在,而数据库EnronKB不存在,当然存在不存在影响不大,迁移的时候ef会判断。
<connectionStrings> <!--add name="EnronKBConnectionString" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=EnronKB;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/--> <add name="EnronKBConnectionString" connectionString="Data Source=localhost;Initial Catalog=EnronKB;Persist Security Info=True;User ID=sa;Password=hello1234!" providerName="System.Data.SqlClient"/> </connectionStrings>
改完了之后,我最经常干的一件事就是打开package manager console然后输入
Add-Migration Init回车
然后start工程,一切搞定,下次如果有更改我一般都直接到数据库中删除掉所有新建的表,然后再回到package manager console然后输入Add-Migration Init回车这一步。(貌似有好方法我还尝试,要组会啦,能交差就行了)
最后呢,当数据库一切定型了,我就可以turn off initializer了,不然每次启动工程都要好久好久。
其中还用到了一些小技术,这都在最开头的教程中又说。不看不知道一看吓一跳。比如自动键值。
另外,非常坑爹的一点,用了ef,数据库已经填了很多,编译会异常漫长。
解决办法是:新建临时数据库Temp,将connectionString指向Temp,就好了。(猜测EF会在项目编译时把数据库扫一遍)
最后我的类附上:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Forest.CMU{using System.Data.Entity; using System.ComponentModel.DataAnnotations; public class Email { public Email() { EmailID =-1; Message_ID ="";..................... } [Key] public int EmailID { get; set; } public string Message_ID { get; set; }.............................. } public class EnronKBContext : DbContext { public EnronKBContext() //: base("EnronKB") : base("name=EnronKBConnectionString") { } public DbSet<Email> Emails { get; set; } }}
- Entity Framework使用心得
- entity framework 事务使用
- entity framework使用(codefirst)
- Entity Framework 使用常见问题
- Entity Framework的简单使用
- 使用entity Framework 常见错误
- Entity Framework安装与使用
- Entity Framework Core使用迁移
- Entity Framework Core 使用体会
- Tip: Entity Framework - 使用Stub Entity提高数据访问效率
- Entity FrameWork
- Entity Framework
- Entity Framework
- Entity FrameWork
- Entity Framework
- Entity Framework
- Entity Framework
- Entity Framework
- 搭建基于Open vSwitch的GRE隧道实验
- linux笔试题
- hdu1231 最大连续子序列
- 第三章栈和队列结构导图
- overridePendingTransition的简介
- Entity Framework使用心得
- Java学习 变量、基本数据类型
- VS2012下开发Windows服务
- iphone的系统信息使用[UIDevice currentDevice]
- 数据结构单链表
- Android程序崩溃 crash信息
- 第一章知识结构框图
- JConsole观察分析Java程序的运行
- iOS开发——为iOS工程创建模拟器包,用于其它电脑上iOS模拟器的运行测试(Creating an iOS Simulator Build)