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 Prodcers { set; get; }
public Tool()
{
Prodcers = new List();
}
}
两个类中互相的应用将在自动创建数据库是创建内外健关系。
三、在项目中添加引用:
如图:
四、添加一个执行将模型转换数据库文件的类命名为:DoneTest.cs
引入命名空间:using System.Data.Entity;
public class DoneTest : DbContext
{
public DbSet DBTools { set; get; }
public DbSet DBProducer { set; get; }
}
在form1中添加如图控件:
代码如下:
引入命名空间:using System.Data.Entity;
///
/// 查询
///
///
///
private void button1_Click(object sender, EventArgs e)
{
IQueryable rs = from t in done.DBTools select t;
dataGridView1.DataSource = rs.ToList();
}
}
///
/// 添加
///
///
///
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:
这个地方要注意: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();
}