您的位置:首页 > 数据库

Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作

2017-05-08 12:19 399 查看
Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作
1>. 创建一个控制台程序
2>. 添加一个 ADO.NET实体数据模型,选择对应的数据库与表(StudentModel.edmx)
3>. 控件台代码
static void Main(string[] args)
{            // 创建一个网关接口,TestData是数据库名
TestDataEntities td = new TestDataEntities();
// 创建一个实体对象,Student是表映射过来的对象,将其赋值
Student st1 = new Student();
st1.StudentID = "s4";
st1.StudentName = "test1";
st1.Age = 20;            // 将实体对象添加到网关接口,插入操作
td.Student.AddObject(st1);            // 网关保存并改变
td.SaveChanges();

Console.WriteLine("添加成功!");
}

如上 StudentModel.edmx 是生成的实体模型就是 映射表,里面包含对象于表的定义Entity Framework 增删改查 操作

1>. 基本同上
2>. 控件台代码
class Program
{        // 创建一个网关接口,TestData是数据库名,静态方法只能调用静态类
static TestDataEntities stuEntities = new TestDataEntities();        static void Main(string[] args)
{            // 创建一个实体对象,Student是表映射过来的对象,将其赋值
Student st1 = new Student();
st1.StudentID = "s4";
st1.StudentName = "小明";
st1.Age = 20;            //InsertStu(st1);            //DeleteStu("s4");            //Student stu2 = FindStudentByID("s4");            //stu2.StudentName = "小明";            //UpdateStu(stu2);            //Console.WriteLine(stu2.StudentName);

}        // 添加操作
public static void InsertStu(Student stu)
{            // 将实体对象添加到网关接口,插入操作
stuEntities.Student.AddObject(stu);            // 网关保存并改变
stuEntities.SaveChanges();
Console.WriteLine("添加成功!ID:"+stu.StudentID);
}        // 删除操作
public static void DeleteStu(string ID)
{
Student stu = FindStudentByID(ID);
stuEntities.Student.DeleteObject(stu);
stuEntities.SaveChanges();
Console.WriteLine("删除成功!ID:" + stu.StudentID);

}        // 更新操作
public static void UpdateStu(Student stu)
{            // 其中 var 为 IQueryable<Student>类型,继承IEnumerable<Student>            // 继承IEnumerable的类都能实现 foreach
var student = from s in stuEntities.Student                          where s.StudentID == stu.StudentID                          select s;            // 得到student集合里面的单一实体
var oldStu = student.SingleOrDefault();            // 修改对应的属性值
oldStu.StudentName = stu.StudentName;
oldStu.Age = stu.Age;
// 保存修改
stuEntities.SaveChanges();
Console.WriteLine("更新成功!ID:" + stu.StudentID);
}    // 更新数据 新方法
public bool UpdateEntity(MvcHotel.Model.Customer entity)
{            bool result = false;            // 添加对象到上下文
he.Attach(entity);            // 改变新加入对象的状态,设置为 已修改
he.ObjectStateManager.ChangeObjectState(entity, System.Data.EntityState.Modified);            if (he.SaveChanges() > 0)
{
result = true;
}            return result;
}        // 查询操作
public static Student FindStudentByID(string ID)
{        // 方式1: Linq to EF            // 根据ID查询Student,并得到集合中的单一实体
var stu = (from s in stuEntities.Student                       where s.StudentID == ID                       select s).SingleOrDefault();        // 方式2: Entity SQL
string sql = "select Value c from TestDataEntities.Student as c ";
ObjectQuery<Student> query = stuEntities.CreateQuery<Student>(sql);
ObjectResult<Student> results = query.Execute(MergeOption.NoTracking);            //return stu;
return query.SingleOrDefault();
}
}

EF中操作数据库的网关
ObjectContext封装 .NET Framework 和数据库之间的连接。此类用作“创建”、“读取”、“更新”和“删除”操作的网关
ObjectContext 类为主类,用于与作为对象(这些对象为 EDM 中定义的实体类型的实例)的数据进行交互
ObjectContext 类的实例封装以下内容:
a> 到数据库的连接,以 EntityConnection 对象的形式封装。
b> 描述该模型的元数据,以 MetadataWorkspace 对象的形式封装
c> 用于管理缓存中持久保存的对象的 ObjectStateManager 对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 项目 控制台
相关文章推荐