1.概念
ado.net entity framework 是微软以ado.net entityframework为基础所发展出来的对象关系对应的解决方案,早期被称为objcetSpace,现已经包含在Visual studio8 Service Pacek1ji以及.net FrameEWork3.5 ServcePack1中发表。
ado.net entity framework以EntityData Model(EDM)为主,将数据逻辑层切分分为三块,分别 Conceptual Schema, Mapping Schema 与 Storage Schema 三层。
在4.1的EntityFramework中,支持开发者先创建实体类模型类,然后在根据实体相关的属性生成相关的数据库文件。这种方法对于开发者来说是很有好处的,首先,会让开发者从面向对象的思维角度出发,去构建业务逻辑中的实体模型,然后再根据实际的需要去生成数据库文件,是真正的面向对象的思维开发方法。
4.1EntityFramework增加了DbContext,连接中有详细的说明。
下载地址: Entity Framework 4.1
2.步骤:
一、建一个c#语言的WindowsFormsApplication项目工程命名为EntityFrameworkTest;
二、增加一个新类Producer.cs,
- public class Producer
- {
- public int ID { get; set; }
- public Tool tool { get; set; }
- public string ProducerName { get; set; }
- public double ItemCode { get; set; }
- }
在我们的类中,有id这个属性,Entity框架会根据id这个属性,去生成数据库表中的对应字段id,如果类中没定义id这个属性,则会在数据库表文件中生成以“类文件名+ID”这样命名的字段。
增加一个类Tool.cs
- public class Tool
- {
- public int ID { get; set; }
- public DateTime Time { get; set; }
- public double Total { get; set; }
- public ICollection<Producer> Prodcers { set; get; }
- public Tool()
- {
- Prodcers = new List<Producer>();
- }
- }
两个类中互相的应用将在自动创建数据库是创建内外健关系。
三、在项目中添加引用:
如图:
四、添加一个执行将模型转换数据库文件的类命名为:DoneTest.cs
引入命名空间:using System.Data.Entity;
- public class DoneTest : DbContext
- {
- public DbSet<Tool> DBTools { set; get; }
- public DbSet<Producer> DBProducer { set; get; }
- }
在form1中添加如图控件:
代码如下:
引入命名空间:using System.Data.Entity;
- /// <summary>
- /// 查询
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void button1_Click(object sender, EventArgs e)
- {
- IQueryable<Tool> rs = from t in done.DBTools select t;
- dataGridView1.DataSource = rs.ToList();
- }
- }
- /// <summary>
- /// 添加
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void button2_Click(object sender, EventArgs e)
- {
- using (DoneTest done = new DoneTest())
- {
- Tool t = new Tool()
- {
- Time=DateTime.Now,
- Total = 2000
- };
- done.DBTools.Add(t);
- done.SaveChanges();
- }
- }
五、配置app.config:
- <?xml version="1.0" encoding="utf-8" ?>
- <configuration>
- <connectionStrings>
- <add name="DoneTest" providerName="Sql.Data.SqlClient" connectionString="server=localhost;Persist Security Info=True;user id=root;password=admin;database=DoneTest"/>
- </connectionStrings>
- </configuration>
这个地方要注意:database的名字必须和定义的doneTest这个类名称一样;
在form1执行查询和添加,如果sqlserver没有此数据库将创建一个和doneTes一样名称的数据库,并且按照数据体创建对应的数据库,如果存在就将数据数据添加到数据库中。
修改数据代码:
- using (DoneTest done = new DoneTest())
- {
- Tool t = new Tool()
- {
- id=1,
- Total = 2000
- };
- db.Entry(t).State = EntityState.Modified;
- done.SaveChanges();
- }
删除代码:
- using (DoneTest done = new DoneTest())
- {
- Tool t = new Tool()
- {
- id=1,
- Total = 2000
- };
- db.Entry(t).State = EntityState.Delele;
- done.SaveChanges();
- }
本文链接地址为:http://blog.youkuaiyun.com/zyxfcb1520/article/details/6696051