VS2010+SQlite+EF 二、初识EF DataBaseFirst

来源:互联网 发布:php公益培训 编辑:程序博客网 时间:2024/05/16 15:08

  DataBaseFirst,数据库优先,就是先建好数据库结构(表、字段、存储过程、视图等等),然后从现有数据库生成实体数据模型

一、添加实体数据模型

右键点击项目,选择添加——新建项——ADO.NET 实体数据模型,选择从数据库生成——下一步,点击新建连接,数据源选择SQlite DataBae File


选择SQlite数据库文件,确定


可选的确定生成对象名称的单复数形式,选中后如果数据库表是复数形式,比如Books,创建的对应对象名就是Book,如果不选,则对应对象名是Books

选择要添加到实体数据模型中的数据对象,完成


二、实体数据模型的结构


第一步完成之后,会往app.config里写入一些环境设置,我们关注的重点是连接字符串

<connectionStrings>    <add name="TestDatabaseEntities" connectionString="metadata=res://*/ModelTestDatabase.csdl|res://*/ModelTestDatabase.ssdl|res://*/ModelTestDatabase.msl;provider=System.Data.SQLite;provider connection string="data source=E:\CSharp\Working Space\Projects\EF6_SQlite_Practice\EF6_SQlite_Practice\bin\Debug\TestDatabase.db3"" providerName="System.Data.EntityClient" />  </connectionStrings>
默认生成的连接字符串是绝对路径,可以将其修改为相对路径,比如 data source=TestDatabase.db3
关于相对路径要注意的地方,参考这个帖子:http://blog.csdn.net/clb929/article/details/60882798


在解决方案资源管理器中,自动创建了一个edmx的东东,这个就是实体数据模型,点开小箭头,有一个ModelTestDatabase.Designer.cs文件,里面就是EF自动生成的代码

有一个继承于ObjectContext的类TestDatabaseEntities,这个就是整个数据库的映射

这个类有几个构造函数,其中不带参数的构造函数会默认读取app.config中name="TestDatabaseEntities"的连接字符串

如果app.config中有多个连接字符串,还可以用另外一个带参数的构造函数创建一个指定连接字符串的TestDatabaseEntities对象

TestDatabaseEntities类还有一些属性,都是一些实体,所谓实体,就是数据表的映射

然后还有很多继承于EntityObject的类,这些就是表的映射,这些类的属性、字段就是数据库中表的字段

数据库的结构是:

数据库——表——字段

生成的实体数据模型的映射关系就是:

实体类容器——实体类——属性

一级级对应关系非常清楚

双击实体数据模型,会以可视化的形式展示整个实体框架


在空白处右键,选择 模型浏览器,可以更清楚的看到数据库与实体模型之间的映射关系


0 0
原创粉丝点击