ADO.NET实体数据模型详细介绍_C#教程

OleDbConnection,OracleConnection 或者SqlConnection这种连接,直接执行sql语句。现在的连接方式执行sql语句有了很大的不同,下面先看看简单的单表的增删改查操作,然后再看多表的关联查询,带参数查询等。
一、ADO.NET Entity对单表的增删改查
有一个表,即在工程中是一个实体user,为了测试方便,所有字段为string型。


1、增加新记录
增加一条记录如下:

[csharp] 
using (OracleEntities entities = new OracleEntities()) 

               User uer = User.CreateUser("id", "name", "age", "1"); 

               entities.User.AddObject(user); 

               entities.SaveChanges(); 

 using (OracleEntities entities = new OracleEntities())
 {
                User uer = User.CreateUser("id", "name", "age", "1");

                entities.User.AddObject(user);

                entities.SaveChanges();
}
2、删除内容

复制代码 代码如下:

 
using (OracleEntities entities = new OracleEntities()) 
 { 
                User user = entities.User.First<User>(a => a.ID.Equals("id")); 

                entities.DeleteObject(user); 

                entities.SaveChanges(); 


using (OracleEntities entities = new OracleEntities())
 {
                User user = entities.User.First<User>(a => a.ID.Equals("id"));

                entities.DeleteObject(user);

                entities.SaveChanges();
}

3、修改内容

复制代码 代码如下:

 
using (OracleEntities entities = new OracleEntities()) 
 { 
                User user = entities.User.First<User>(a => a.User.Equals("id")); 

                user.Remarks = "修改了内容"; 

                entities.SaveChanges(); 


using (OracleEntities entities = new OracleEntities())
 {
                User user = entities.User.First<User>(a => a.User.Equals("id"));

                user.Remarks = "修改了内容";

                entities.SaveChanges();
}

4、查询内容
(1)实体直接查询
[/code] 
using (OracleEntities entities = new OracleEntities()) 
 { 
                ObjectQuery<User> result = entities.User;//查询所有  

                foreach (User item in result) 
                { 

                } 


using (OracleEntities entities = new OracleEntities())
 {
                ObjectQuery<User> result = entities.User;//查询所有

                foreach (User item in result)
                {

                }
}
[/code]
(2)Esql查询

复制代码 代码如下:

ObjectQuery<DbDataRecord> result = entities.CreateQuery<DbDataRecord>("select value it  from  OracleEntities.User as it ");

(3)按条件查

复制代码 代码如下:

var result = entities.User.Where(o => o.id.Equals("id"));

二、关联查询
比如还有个表Other与User外键关联。


进行查询如下:

复制代码 代码如下:

 
using (OracleEntities entities = new OracleEntities()) 
 { 
                string esql = "SELECT b.detail FROM OracleEntities.User as a,OracleEntities.Other as b where a.otherid = b.id and a.id='id'"; 

                ObjectQuery<DbDataRecord> query = entities.CreateQuery<DbDataRecord>(esql); 

                foreach (DbDataRecord r in query) 
                { 
                    string ss = r["detail"].ToString(); 
                } 
 } 

using (OracleEntities entities = new OracleEntities())
 {
                string esql = "SELECT b.detail FROM OracleEntities.User as a,OracleEntities.Other as b where a.otherid = b.id and a.id='id'";  www.jb51.net

                ObjectQuery<DbDataRecord> query = entities.CreateQuery<DbDataRecord>(esql);

                foreach (DbDataRecord r in query)
                {
                    string ss = r["detail"].ToString();
                }
 }

当然这些都是最基本的用法,因为使用的Linq和ESql,在后面再Linq和ESql的用法里再详细说明。
 

时间: 2025-01-21 16:34:13

ADO.NET实体数据模型详细介绍_C#教程的相关文章

c# 类和成员的修饰详细介绍_C#教程

基本概念: 一.类是对于业务处理对象的封装, 包括状态和行为的封装. 二.类的成员种类: 1.常量: 数据值恒定不变的一个符号 2.字段: 字段表示一个只读或者可读写的数据值. 通常用字段来标识一个类或者类产生对象的某种状态, 在实践中,通常将字段标识为private, 避免从类/对象外破坏类/对象的状态. 3.实例构造器(Constructor):将新对象的实例字段初始化为良好初始状态的一种特殊方法. 4.类型构造器,也就是静态的Constructor, 用来初始化类的静态字段. 5.方法:一

C# 写入XML文档三种方法详细介绍_C#教程

我在以前的博客中介绍了如何使用XmlDocument类对XML进行操作,以及如何使用LINQ to XML对XML进行操作.它们分别使用了XmlDocument类和XDocument类.在本文中,我再介绍一个类,XmlTextWriter.我们分别用这三个类将同样的xml内容写入文档,看一看哪种写法最直观.简便. 我们要写入的XML文档内容为 复制代码 代码如下: <?xml version="1.0" encoding="UTF-8"?> <Co

C# 中的var关键字详细介绍_C#教程

C# var关键字详解 var 是3.5新出的一个定义变量的类型 其实也就是弱化类型的定义 VAR可代替任何类型 编译器会根据上下文来判断你到底是想用什么类型的 至于什么情况下用到VAR 我想就是你无法确定自己将用的是什么类型 就可以使用VAR 类似 OBJECT 但是效率比OBJECT高点. 或者通俗的讲:   var可以理解为匿名类型,我们可以认为它是一个声明变量的占位符.它主要用于在声明变量时,无法确定数据类型时使用. 使用var定义变量时有以下四个特点: 1. 必须在定义时初始化.也就是

c#设计模式 适配器模式详细介绍_C#教程

后续内容将包括以下结构模式: 适配器模式(Adapter):Match interfaces of different classes合成模式(Composite):A tree structure of simple and composite objects装饰模式(Decorator):Add responsibilities to objects dynamically代理模式(Proxy):An object representing another object享元模式(Flywei

C++开发:为什么多线程读写shared_ptr要加锁的详细介绍_C 语言

我在<Linux 多线程服务端编程:使用 muduo C++ 网络库>第 1.9 节"再论 shared_ptr 的线程安全"中写道: (shared_ptr)的引用计数本身是安全且无锁的,但对象的读写则不是,因为 shared_ptr 有两个数据成员,读写操作不能原子化.根据文档(http://www.boost.org/doc/libs/release/libs/smart_ptr/shared_ptr.htm#ThreadSafety), shared_ptr 的线程

ADO.NET实体数据模型讲解

  ADO.NET是.NET与数据库互操作的核心,而ADO.NET实体数据库则增强了.NET应用程序与数据库的互联能力,通过ADO.NET实体数据模型我们可以很方便的与底层数据库进行强类型的数据互操作.大大的方便了设计人员,从而也提高了数据库操作的安全性. 最近在使用到Silverlight的领域数据服务时遇到一个很特别的问题[在应用程序中的结果和数据库的结果不一样],经过反复的试验,终于找到了问题的根源,那就是ADO.NET实体数据模型依赖于实体键,它的查询会生成实体键的唯一结果集. 现在来看

ADO.NET实体数据模型多表连接查询中的实体键问题

ADO.NET是.NET与数据库互操作的核心,而ADO.NET实体数据库则增强了.NET应用程序与数据库的互联能力,通过ADO.NET实体数据模型我们可以很方便的与底层数据库进行强类型的数据互操作.大大的方便了设计人员,从而也提高了数据库操作的安全性.最近在使用到Siverlight的领域数据服务时遇到一个很特别的问题[在应用程序中的结果和数据库的结果不一样],经过反复的试验,终于找到了问题的根源,那就是ADO.NET实体数据模型依赖于实体键,它的查询会生成实体键的唯一结果集. 现在来看看具体的

ado-vs2010 添加ADO.net 实体数据模型时错误

问题描述 vs2010 添加ADO.net 实体数据模型时错误 本人学生菜鸟,学习 Entity Framework 的时候添加实体数据模型的时候,ADO实体模型是灰色的,添加后显示如下错误,求各位大神给予解决方案!!谢谢 解决方案 先安装visual studio 2010 sp1 然后安装entity framework tools

ado.net 实体数据模型 找不到元素错误

问题描述 在从数据库更新模型时出现:在输出窗口里->实体数据模型中有:无法分析配置文件.错误消息为:"找不到元素.(异常来自HRESULT:0x8002802B(TYPE_E_ELEMENTNOTFOUND))".请尝试手动编辑文件并保存.在.edmx文件属性中连接字符串为空web.config中连接字符串没有问题新建的VS项目中添加ado.net实体数据模型也没有问题.当前项目运行也没问题,但是不能更新模型,也不能新建模型.令人郁闷 解决方案 本帖最后由 lzghello 于