【NCRE】---EF三种编程方式

    一级在开始测试的时候就遇到了一个大难题:Entity Framework的版本兼容问题!咱们学校五楼机房的电脑版本都是非常低的,它的Entity Framework的版本为3.5,而我们编程的时候用的版本是4.5的!根据高版本不能兼容低版本,所以我们的系统在5楼电脑上根本就不能运行! 那么到底什么是Entity Framework呢?

百度百科:
    Entity Framework 利用了抽象化数据结构的方式,将每个数据库对象都转换成应用程序对象 (entity),而数据字段都转换为属性 (property),关系则转换为结合属性 (association),让数据库的 E/R 模型完全的转成对象模型。方便了设计师对数据库的操作。
我认为:
    Entity Framework就是集成在VS中的,方便用户操作数据库的一种对象关系对应解决方案。Entity Framework4.1之前EF支持“Database First”和“Model First”编程方式,从EF4.1开始EF开始支持支持“Code First”编程方式,下面来了解一下这三种编程方式。

Database First:
    这种模式我们称之为“数据库优先”。在一级中就是用的这种,直接利用数据库生成实体模型,具体如下:
先新建生成类库,名称为Model:
    

右击Modle,新建项:


按照提示一步一步的做,最好数据库中的表中都有主键,这样不容易出错!

 





这只是建立了模型,建好以后如果你的数据库表结构发生改变后,只需在模型设计视图空白处右键,选择“从数据库更新模型”接着按照向导操作即可。接下来就需要用EF进行数据查询,对数据库中的数据进行操作,这里有一个例子可以参考:
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace DatabaseFirst
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var db = new AdventureWorksEntities())
            {
                IQueryable<Person> persons = from people in db.People
                                             where people.LastName == "Sánchez"
                                             select people;
                foreach (Person p in persons)
                {
                    Console.WriteLine("first name is :{0}", p.FirstName);
                    if (p.FirstName == "Angela")
                    {
                        p.AdditionalContactInfo = "other info";
                    }
                }
 
                var persons2 = from people in db.People
                               where people.LastName == "Sánchez" && people.FirstName == "Angela"
                               select people;
                if (persons2.Count() > 0)
                {
                    Console.WriteLine("additional contact information is :{0}", persons2.First().AdditionalContactInfo);
                }
                //上面虽然可以查出来AddtionalContactInfo,但是实际省并未保存到数据库,具体保存方法在此不再详细描述
            }
        }
    }
}


Model First:
   
   这种模型我们称之为“模型优先”,在这种情况下,我们还没有设计相关的数据库,在vs中我们通过设计对应的数据模型来生成数据库和数据类。
步骤如下:
右击Model类库,新建ADO.NET实体数据库模型:


在弹出框中填入你需要的实体名称,类型等信息:


还可以添加二者之间的关系,
“Order”和“OrderDetail”是一对多的关系,“Order”可以通过“OrderDetails”属性访问“OrderDetail”实体,“OrderDetail”可以通过“Order”属性访问“Order”实体,并且添加了一个外键约束到“OrderDetail”中。
然后在空白处选择“从模型生成到数据库.....”



点击完成就会生成数据库脚本,放到数据库执行以下就可以生成数据库表。



Code First:
    这种模式我们称之为“代码优先”模式,是从EF4.1开始加入的新功能,这种方法我自己也没有用过,所以只是给大家提供以下思路,具体的执行大家可以实践一下!具体的见链接:http://www.360doc.com/content/14/0327/09/5054188_364065885.shtml

知识总结,梳理,希望可以帮到大家!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值