EntLib.com 基于Microsoft .Net Framework / ASP.Net / C# / AJAX 平台构建的标准电子商务系统

ADO.NET Entity Framework 入门示例向导(附Demo程序下载) 选 项
entlibforum
发表时间 : Saturday, August 23, 2008 3:02:45 PM - 【楼 主】
entlibforum

等级: 管理员级别
组: 管理员组 , 注册会员组

注册时间: 8/17/2008
帖子数量: 190
发帖积分: 563
所在地: EntLib.com 开源论坛小组
ADO.NET Entity Framework 入门示例向导(附Demo程序下载)
 
 
ADO.NET Entity Framework 是.Net Framework 3.5 SP1 引入的实体框架,它使开发人员可以通过对象模型(而不是逻辑/关系数据模型)专注于数据。实体框架Entity Framework使用概念层、映射层和逻辑层将逻辑数据库结构抽象化。本文http://forum.entlib.com 开源论坛小组提供。
 
实体数据模型(Entity Data Model
实体框架的核心位于其模型中。实体框架支持表示数据库中的关系架构的逻辑存储模型。关系数据库通常存储数据的方式与应用程序使用数据的方式不同。通常,这会迫使开发人员按照数据库包含数据的结构检索数据。因此,开发人员通常将数据加载到更适合处理业务规则的业务实体中。在本示例中,以逻辑模型表示关系数据库的构架,业务实体表示概念模型。实体框架使用映射层在模型之间搭建了桥梁。因此,实体框架的模型中有三个处于活动状态的层:
1.    概念层(Conceptual layer - 表示数据的概念模型,包括实体和相互关系。
2.    逻辑层(Logical layer- 描述数据在数据库的存储模型。
3.    映射层(Mapping layer - 在概念层和逻辑层模型之间建立映射。
 
这三层允许将数据从关系数据库映射到更加面向对象的业务模型。实体框架提供了使用 XML 文件定义这些层的方法。它还基于概念模型的架构生成了一系列类。可以针对这些类进行编程以直接与数据交互。这提供了抽象级别,因此开发人员可以针对概念模型而不是关系模型进行编程。
 
下面演示如何使用Entity Framework 构建示例程序。
首先,使用Entity Data Model Wizard创建如下NorthwindDB.edml文件。



概念模型和逻辑模型视图:



 
本示例程序采用Northwind 示例数据库,下面开始编写代码对Customers表进行增、删、改、查等等操作。
 
1.新增Customers记录
            using (NorthwindEntities myDb = new NorthwindEntities())
            {
                Customers customer = new Customers();
 
                Random rm = new Random();
 
                customer.CustomerID = "A" + rm.Next(9999).ToString();
                customer.CompanyName = "EntLib.com Forum";
                customer.Address = "http://www.EntLib.com";
 
                myDb.AddToCustomers(customer);
 
                int count = myDb.SaveChanges();
 
                txtCustomerID.Text = customer.CustomerID;
            }
 
2.更新Customers记录
            using (NorthwindEntities myDb = new NorthwindEntities())
            {
                var query = from customer in myDb.Customers
                            where customer.CustomerID == txtCustomerID.Text.Trim()
                            select customer;
 
                foreach (var row in query)
                {
                    row.CompanyName = "Updated Company Name";
                }
 
                myDb.SaveChanges();
            }
 
3.删除Customers记录
            using (NorthwindEntities myDb = new NorthwindEntities())
            {
                var query = from customer in myDb.Customers
                            where customer.CustomerID == txtCustomerID.Text.Trim()
                            select customer;
 
                foreach (var row in query)
                {
                    myDb.DeleteObject(row);
                }
 
                myDb.SaveChanges();
            }
 
4.查询Customers,返回所有记录
            using (NorthwindEntities myDb = new NorthwindEntities())
            {
                dataGridView1.DataSource = myDb.Customers;
            }
 
如下的Entity Framework Demo 程序的运行界面:



 
本示例程序由http://forum.entlib.com 开源ASP.NET论坛小组提供,如有问题或疑问,欢迎访问http://forum.entlib.com 论坛。
 
 




附件
EntityFrameworkDemo.rar 78 KB, 下载 2,044 次.



http://forum.entlib.com -- 免费、开源、ASP.NET 论坛。
EntLib.com 授权广告商
发表时间 : Saturday, August 23, 2008 3:02:45 PM - 【AD】

以上是EntLib.com的授权广告内容,如果您不感兴趣,请忽略。谢谢!
thurston
发表时间 : Sunday, August 24, 2008 1:38:18 AM - 【2 楼】
等级: 初级会员
组: 注册会员组

注册时间: 8/24/2008
帖子数量: 3
发帖积分: 9
我都是按照步骤自己做一篇  只是表换成UserInfo  请问插入数据时出现下面的错误是什么原因呢??我是不是漏了什么步骤了??

无法更新 EntitySet“UserInfo”,因为它有一个 DefiningQuery,而 <ModificationFunctionMapping> 元素中没有支持当前操作的 <InsertFunction> 元素。

entlibforum
发表时间 : Sunday, August 24, 2008 10:51:25 AM - 【3 楼】
entlibforum

等级: 管理员级别
组: 管理员组 , 注册会员组

注册时间: 8/17/2008
帖子数量: 190
发帖积分: 563
所在地: EntLib.com 开源论坛小组
你没有遗漏任何步骤。

你可以删除了已创建的Entity Data Model,然后重新做一遍,可能就解决问题了。

如果还有相同的问题,你可以看看UserInfo 表是否有设置主键。如果没有设置主键,你看设置主键后,再一次删除上面创建的Entity Data Model,然后再次创建新的Entity Data Model,相信问题就可以解决了。


http://forum.entlib.com -- 免费、开源、ASP.NET 论坛。
entlibforum
发表时间 : Sunday, August 24, 2008 4:10:07 PM - 【4 楼】
entlibforum

等级: 管理员级别
组: 管理员组 , 注册会员组

注册时间: 8/17/2008
帖子数量: 190
发帖积分: 563
所在地: EntLib.com 开源论坛小组

http://forum.entlib.com -- 免费、开源、ASP.NET 论坛。
Jordan
发表时间 : Tuesday, September 09, 2008 2:35:38 PM - 【5 楼】
等级: 初级会员
组: 注册会员组

注册时间: 9/7/2008
帖子数量: 3
发帖积分: 9
所在地: 重庆
看了看。还在学习中
herubber
发表时间 : Tuesday, October 28, 2008 9:47:11 AM - 【6 楼】
等级: 初级会员
组: 注册会员组

注册时间: 10/28/2008
帖子数量: 2
发帖积分: 6
所在地: China.GuangDong
请问edml支持remoting 吗,如果配合remoting,把数据获取层独立在服务端,客户端不链接DataServer,不知道Entity可不可以:^o
entlibforum
发表时间 : Tuesday, October 28, 2008 5:43:56 PM - 【7 楼】
entlibforum

等级: 管理员级别
组: 管理员组 , 注册会员组

注册时间: 8/17/2008
帖子数量: 190
发帖积分: 563
所在地: EntLib.com 开源论坛小组
To herubber,

edml 可以作为DAL层,与Remoting / WCF 等等没有关系,因此edml 当然支持remoting了。

客户端不需要连接 database server,但是需要引用edml,因为需要引用edml 的业务实体对象(Entity Type)。


http://forum.entlib.com -- 免费、开源、ASP.NET 论坛。
herubber
发表时间 : Wednesday, October 29, 2008 4:30:12 PM - 【8 楼】
等级: 初级会员
组: 注册会员组

注册时间: 10/28/2008
帖子数量: 2
发帖积分: 6
所在地: China.GuangDong
謝謝 entilibforum解答,我理解錯了
redcar
发表时间 : Monday, January 05, 2009 11:08:10 AM - 【9 楼】
等级: 初级会员
组: 注册会员组

注册时间: 6/30/2008
帖子数量: 4
发帖积分: 5
所在地: dsfdsds
 使用了DEMO后
基础提供程序在 Open 上失败
连接字符串我已经改成本机了
entlibforum
发表时间 : Monday, January 05, 2009 8:48:21 PM - 【10 楼】
entlibforum

等级: 管理员级别
组: 管理员组 , 注册会员组

注册时间: 8/17/2008
帖子数量: 190
发帖积分: 563
所在地: EntLib.com 开源论坛小组
redcar,

你可以将修改后的连接字符串贴上来看看,是否有遗漏哪里?

http://forum.entlib.com -- 免费、开源、ASP.NET 论坛。
redcar
发表时间 : Tuesday, January 06, 2009 2:27:40 PM - 【11 楼】
等级: 初级会员
组: 注册会员组

注册时间: 6/30/2008
帖子数量: 4
发帖积分: 5
所在地: dsfdsds
多谢BOSS,已经找到原因了,是密码问题
geoffrey
发表时间 : Wednesday, April 15, 2009 3:24:45 PM - 【12 楼】
等级: 初级会员
组: 注册会员组

注册时间: 4/15/2009
帖子数量: 8
发帖积分: 17
请问版主,我运行DEMO出现如下错误:
无法解析程序集“NorthwindEDM”
 
Jacky
发表时间 : Wednesday, April 15, 2009 4:00:49 PM - 【13 楼】


等级: 3星级会员
组: 高级会员组 , 管理员组, 注册会员组

注册时间: 5/11/2008
帖子数量: 245
发帖积分: 738
看看是不是项目没有引用NorthwindEDM程序集呀?
geoffrey
发表时间 : Wednesday, April 15, 2009 4:52:35 PM - 【14 楼】
等级: 初级会员
组: 注册会员组

注册时间: 4/15/2009
帖子数量: 8
发帖积分: 17
<add name="NorthwindEntities" connectionString=" metadata= res://NorthwindEDM/NorthwindModel.csdl|res://NorthwindEDM/NorthwindModel.ssdl|res://NorthwindEDM/NorthwindModel.msl; provider=System.Data.SqlClient;provider connection string=&quot;Data Source=localhost;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />


我用的是SQL SERVER2005


现在报错:
基础提供程序在 Open 上失败
Jacky
发表时间 : Wednesday, April 15, 2009 8:59:39 PM - 【15 楼】


等级: 3星级会员
组: 高级会员组 , 管理员组, 注册会员组

注册时间: 5/11/2008
帖子数量: 245
发帖积分: 738
数据库 Northwind 有么?支持windows帐号登录么?
geoffrey
发表时间 : Wednesday, April 15, 2009 9:10:49 PM - 【16 楼】
等级: 初级会员
组: 注册会员组

注册时间: 4/15/2009
帖子数量: 8
发帖积分: 17

不支持。

geoffrey
发表时间 : Wednesday, April 15, 2009 9:14:23 PM - 【17 楼】
等级: 初级会员
组: 注册会员组

注册时间: 4/15/2009
帖子数量: 8
发帖积分: 17

如果是通过SA登录应该怎么改?
谢谢版主这么晚还帮解决问题。

另外我以前也是搞程序开发的,05年出来自己做,所以技术上丢了不少,现在有个项目需要开发,没办法自己顶上。呵呵


如果你们有什么产品,我这边有销售团队,大家也可以一起做些事情。

entlibforum
发表时间 : Wednesday, April 15, 2009 9:48:05 PM - 【18 楼】
entlibforum

等级: 管理员级别
组: 管理员组 , 注册会员组

注册时间: 8/17/2008
帖子数量: 190
发帖积分: 563
所在地: EntLib.com 开源论坛小组
需要将上述的connection string更改为sa帐号登录:
Source=localhost;Initial Catalog=Northwind;Integrated Security=True;
更改为:
Source=localhost;Initial Catalog=Northwind;User ID=sa;Password=密码;

你在哪里?我们的核心产品是电子商务前台、后台业务处理系统、及相关电子商务配套产品。你可以访问如下网址了解细节:
http://www.entlib.com/product/default.aspx

http://forum.entlib.com -- 免费、开源、ASP.NET 论坛。
geoffrey
发表时间 : Wednesday, April 15, 2009 10:01:46 PM - 【19 楼】
等级: 初级会员
组: 注册会员组

注册时间: 4/15/2009
帖子数量: 8
发帖积分: 17
在上海,MSN:geoffreyren@hotmail.com
EntLib.com 专业电子商务系统
浏览本话题的用户
Guest


论坛跳转
不可以 发表新话题.
不可以 回复话题.
不可以 删除自己的发言.
不可以 编辑自己的发言.
不可以 发表投票.
不可以 投票.
主论坛 RSS : RSS  页面生成时间: 0.182 秒. Powered by: EntLib.com 论坛
关于我们 | 联系方式 | 商务合作 | 友情链接
Copyright(C) 2007-2009 EntLib.com(上海闵行区浦江镇863软件孵化基地) - 最专业的中文电子商务系统
基于Microsoft .Net Framework / ASP.Net / C# / AJAX 平台构建的标准电子商务系统
All Rights Reserved (R)
沪ICP备08014628号