ADO.NET Entity Framework esql 使用手册

12 篇文章 0 订阅
目录

  1  esql的查询结果集 ObjectQuery  1

  1.1  ObjectQuery<实体>  1

  1.2  ObjectQuery<DbDataRecord>  1

  1.3  ObjectQuery<简单类型>  1

  2  esql的使用  2

  2.1  it关键字  2

  2.2  value 关键字  2

  2.3  查询参数的使用  3

  2.4  中文字段  3

  3  得到esql与sql字串  3

  3.1  CommandText属性  4

  3.2  ToTraceString方法  4

  4  ObjectQuery的Linq方法  4

  4.1  Where  4

  4.2  OrderBy  4

  4.3  Select  4

  4.4  SelectValue(projection)  4

  4.5  Top(count)  5

  4.6  Skip(keys,count)  5

  4.7  分页 Skip Top  5

  4.8  GroupBy(keys,projection)  6

  4.9  Include(path)  6

  5  esql注释,成员访问,分行  6

  6  esql运算符  7

  6.1  算术运算符  7

  6.2  比效运算符  7

  6.3  逻辑运算符  7

  6.4  区间  7

  6.5  集合运算  8

  7  esql函数  10

  7.1  统计类  10

  7.1.1  联合使用  11

  7.1.2  与group by一起使用  11

  7.2  数学类  11

  7.3  日期  11

  7.4  字符  12

  8  esql语句  12

  8.1  查询语句  12

  8.2  CASE语句  14

  9  esql 类型  14

  9.1  简单类型  14

  9.2  REF  16

  9.3  ROW  16

  9.4  集合  16

  9.5  Object 返回对像  17

  9.6  CAST 类型转换  17

  9.7  OFTYPE  18

  9.8  TREAT  18

  9.9  IS 类型判断  19

  10  esql Namespace  19

  10.1  使用SqlServer函数  19

  10.2  使用NET的数据类型  20

  11  esql关系,导航  20

  11.1  KEY  20

  比起 LINQ to SQL,EF 除了提供 LINQ 查询方式, 还提供了 Entity SQL language

  ESQL 类似 Hibernate 的 HSQL,ESQL 与SQL 语言的语法相似,以字符串的方式执行

  esql的查询结果集 ObjectQuery ObjectQuery<实体>

myContext context = new myContext();
  
string esql = "SELECT VALUE DBItemList FROM myContext.DBItemList";
  
// ObjectQuery<DBItemList> query = new ObjectQuery<DBItemList>(esql, context);
  
ObjectQuery<DBItemList> query = context.CreateQuery<DBItemList>(esql);
  
foreach (DBItemList r in query)
{
Console.WriteLine(r.NameID);
}
myContext context = new myContext();
  
string esql = "SELECT VALUE it FROM myContext.DBItemList as it";
  
// ObjectQuery<DBItemList> query = new ObjectQuery<DBItemList>(esql, context);
  
ObjectQuery<DBItemList> query = context.CreateQuery<DBItemList>(esql);
  
foreach (DBItemList r in query)
{
Console.WriteLine(r.NameID);
}

ObjectQuery<DbDataRecord>

myContext context = new myContext();
  
string esql = "SELECT it.NameID FROM myContext.DBItemList as it";
  
//ObjectQuery<DbDataRecord> query = new ObjectQuery<DbDataRecord>(esql, context);
ObjectQuery<DbDataRecord> query = context.CreateQuery<DbDataRecord>(esql);
  
foreach (DbDataRecord r in query)
{
Console.WriteLine(r["NameID"].ToString());
}

ObjectQuery<简单类型>

myContext context = new myContext();
  
string esql = "SELECT value count(it.NameID) FROM myContext.DBItemList as it";
  
// ObjectQuery<int> query = new ObjectQuery<int>(esql, context);
  
ObjectQuery<int> query = context.CreateQuery<int>(esql);
foreach (int n in query)
{
Console.WriteLine(n);
}
myContext context = new myContext();
  
string esql = "SELECT value it.NameID FROM myContext.DBItemList as it";
  
// ObjectQuery<int> query = new ObjectQuery<int>(esql, context);
  
ObjectQuery<string> query = context.CreateQuery<string>(esql);
foreach (string n in query)
{
Console.WriteLine(n);
}

esql的使用

  可以在

  ObjectQuery的Linq方法,

  构造ObjectQuery,

  context.CreateQuery返方法,

  中使用esql,并得到返回的榄查询结果ObjectQuery

  it关键字

  [it] 出现在 ESQL 中, 由 ObjectQuery<T>.Name 属性设定,用于标示源查询对象(ObjectQuery)的名称,

  类似于 "SELECT * FROM Tab as it WHERE it.ItemValue =14" 。

  可以将这个默认值 "it" 改成其他字符串。

myContext context = new myContext();
context.DBItemList.Name = "wxd";
  
ObjectQuery<DBItemList> list = context.DBItemList.Where("wxd.ItemValue=5");
myContext context = new myContext();
  
var sql = "SELECT VALUE DBItemList FROM myContext.DBItemList";
var query = new ObjectQuery<DBItemList>(sql, context);
query.Name = "wxd";
  
ObjectQuery<DBItemList> list = query.Where("wxd.ItemValue=@v", new ObjectParameter("v", 5));

       value 关键字

  value 后只能返回一个成员

myContext context = new myContext();
string esql = "SELECT value AVG(it.ItemValue) FROM myContext.DBItemList as it";
ObjectQuery<int> query = context.CreateQuery<int>(esql);
foreach (int n in query)
{
Console.WriteLine(n);
}
  
/* print:
3
*/
string esql = "select value it.ItemID from myContext.DBItemList as it";
  
ObjectQuery<string> query = context.CreateQuery<string>(esql);
  
foreach (string r in query)
{
Console.WriteLine(r);
}
myContext context = new myContext();
  
string esql = "select value row( it.ItemValue ,it.NameID,'wxd' as wxwinter) from myContext.DBItemList as it";
  
ObjectQuery<DbDataRecord> query = context.CreateQuery<DbDataRecord>(esql);
  
foreach (DbDataRecord r in query)
{
Console.WriteLine("{0},{1},{2}", r["ItemValue"], r["NameID"], r["wxwinter"]);
}

查询参数的使用

myContext context = new myContext();
  
string esql = "SELECT VALUE it FROM myContext.DBItemList as it where it.ItemValue=@v1 or it.NameID=@v2";
  
ObjectParameter v1 = new ObjectParameter("v1", 3);
ObjectParameter v2 = new ObjectParameter("v2", "n01");
ObjectQuery<DBItemList> query = context.CreateQuery<DBItemList>(esql,v1,v2);
  
foreach (DBItemList r in query)
{
Console.WriteLine("{0},{1}",r.NameID,r.ItemValue);
}

  中文字段

  使用[]将字段括起来

myContext context = new myContext();
  
ObjectQuery<typeTest> query = context.typeTest.Where("it.值 ==22.22");
System.Console.WriteLine(query.CommandText);
foreach (typeTest r in query)
{
Console.WriteLine("{0},{1},{2},{3},{4},{5}", r.a, r.b, r.c, r.d, r.e, r.值);
}

以上应该改为如下

myContext context = new myContext();
  
ObjectQuery<typeTest> query = context.typeTest.Where("it.[值] ==22.22");
System.Console.WriteLine(query.CommandText);
foreach (typeTest r in query)
{
Console.WriteLine("{0},{1},{2},{3},{4},{5}", r.a, r.b, r.c, r.d, r.e, r.值);
}

  得到esql与sql字串

myContext context = new myContext();
  
string esql = "SELECT VALUE it FROM myContext.DBItemList as it";
  
ObjectQuery<DBItemList> query = context.CreateQuery<DBItemList>(esql);
  
Console.WriteLine(query.CommandText);
  
Console.WriteLine(query.ToTraceString())
SELECT VALUE it FROM myContext.DBItemList as it
SELECT
[Extent1].[AutoId] AS [AutoId],
[Extent1].[NameID] AS [NameID],
[Extent1].[ItemID] AS [ItemID],
[Extent1].[ItemValue] AS [ItemValue]
FROM [dbo].[DBItemList] AS [Extent1]

  CommandText属性

  得到esql字串

  ToTraceString方法

  得到sql字串

  ObjectQuery的Linq方法 Where

  用字符串为条件进行查询

ObjectQuery<T> Where(string predicate, params ObjectParameter[] parameters);
myContext context = new myContext();
ObjectQuery<DBItemList> list = context.DBItemList.Where("(it.ItemValue=5 or it .ItemValue=5) and it.NameID='n01'");
SELECT
[Extent1].[AutoId] AS [AutoId],
[Extent1].[NameID] AS [NameID],
[Extent1].[ItemID] AS [ItemID],
[Extent1].[ItemValue] AS [ItemValue]
FROM [dbo].[DBItemList] AS [Extent1]
WHERE (([Extent1].[ItemValue] = 5) OR ([Extent1].[ItemValue] = 5)) AND ([Extent1].[NameID] = 'n01')

  OrderBy

  排序

ObjectQuery<T> OrderBy(string keys, params ObjectParameter[] parameters);
myContext context = new myContext();
ObjectQuery<DBItemList> query = context.DBItemList.OrderBy("it.ItemValue,it.ItemID desc");
foreach (var r in query)
{
Console.WriteLine("{0},{1},{2},{3}", r.AutoId, r.ItemID, r.NameID, r.ItemValue);
}
SELECT
[Extent1].[AutoId] AS [AutoId],
[Extent1].[NameID] AS [NameID],
[Extent1].[ItemID] AS [ItemID],
[Extent1].[ItemValue] AS [ItemValue]
FROM [dbo].[DBItemList] AS [Extent1]
ORDER BY [Extent1].[ItemValue] ASC, [Extent1].[ItemID] DESC

  Select

  射影

ObjectQuery<DbDataRecord> Select(string projection, params ObjectParameter[] parameters);
myContext context = new myContext();
  
ObjectQuery<DbDataRecord> list = context.DBItemList.Select(" it.ItemValue as a,it.NameID ");
SELECT
1 AS [C1],
[Extent1].[ItemValue] AS [ItemValue],
[Extent1].[NameID] AS [NameID]
FROM [dbo].[DBItemList] AS [Extent1]

  SelectValue(projection)

  返回只有一组字段的数组

ObjectQuery<TResultType> SelectValue<TResultType>(string projection, params ObjectParameter[] parameters);
myContext context = new myContext();
ObjectQuery<int> query = context.DBItemList.SelectValue<int>("it.ItemValue + it.AutoID");
foreach (var r in query)
{
Console.WriteLine(r);
}
SELECT
[Extent1].[ItemValue] + [Extent1].[AutoId] AS [C1]
FROM [dbo].[DBItemList] AS [Extent1]

  Top(count)

  集合的前n个元素

  count : 前n个元素

ObjectQuery<T> Top(string count, params ObjectParameter[] parameters);
myContext context = new myContext();
ObjectQuery<DBItemList> query = context.DBItemList.Top("3"); ;
foreach (var r in query)
{
Console.WriteLine("{0},{1},{2},{3}", r.AutoId, r.ItemID, r.NameID, r.ItemValue);
  
}
SELECT TOP (3)
[c].[AutoId] AS [AutoId],
[c].[NameID] AS [NameID],
[c].[ItemID] AS [ItemID],
[c].[ItemValue] AS [ItemValue]
FROM [dbo].[DBItemList] AS [c]

  Skip(keys,count)

  跳过集合的前n个元素,

  keys : 用于排序的字段

  count : 要跳过的记录个数

ObjectQuery<T> Skip(string keys, string count, params ObjectParameter[] parameters);
myContext context = new myContext();
ObjectQuery<DBItemList> query = context.DBItemList.Skip("it.ItemValue", "5");
foreach (var r in query)
{
Console.WriteLine("{0},{1},{2},{3}", r.AutoId, r.ItemID, r.NameID, r.ItemValue);
  
}
SELECT
[Extent1].[AutoId] AS [AutoId],
[Extent1].[NameID] AS [NameID],
[Extent1].[ItemID] AS [ItemID],
[Extent1].[ItemValue] AS [ItemValue]
FROM ( SELECT [Extent1].[AutoId] AS [AutoId], [Extent1].[NameID] AS [NameID], [Extent1].[ItemID] AS [ItemID], [Extent1].[ItemValue] AS [ItemValue], row_number() OVER (ORDER BY [Extent1].[ItemValue] ASC) AS [row_number]
  FROM [dbo].[DBItemList] AS [Extent1]
) AS [Extent1]
WHERE [Extent1].[row_number] > 5
ORDER BY [Extent1].[ItemValue] ASC

  分页 Skip Top

  Skip与Top一起使用

myContext context = new myContext();
ObjectQuery<DBItemList> query = context.DBItemList.Skip("it.ItemValue", "5").Top("3"); ;
foreach (var r in query)
{
Console.WriteLine("{0},{1},{2},{3}", r.AutoId, r.ItemID, r.NameID, r.ItemValue);
  
}
SELECT TOP (3)
[Extent1].[AutoId] AS [AutoId],
[Extent1].[NameID] AS [NameID],
[Extent1].[ItemID] AS [ItemID],
[Extent1].[ItemValue] AS [ItemValue]
FROM ( SELECT [Extent1].[AutoId] AS [AutoId], [Extent1].[NameID] AS [NameID], [Extent1].[ItemID] AS [ItemID], [Extent1].[ItemValue] AS [ItemValue], row_number() OVER (ORDER BY [Extent1].[ItemValue] ASC) AS [row_number]
  FROM [dbo].[DBItemList] AS [Extent1]
) AS [Extent1]
WHERE [Extent1].[row_number] > 5
ORDER BY [Extent1].[ItemValue] ASC

  GroupBy(keys,projection)

  分组

  keys: GROUP BY的字段

  projection : Select 的内容

ObjectQuery<DbDataRecord> GroupBy(string keys, string projection, params ObjectParameter[] parameters);
myContext context = new myContext();
ObjectQuery<DbDataRecord> query = context.DBItemList.GroupBy("it.ItemID", "it.ItemID,Sum(it.ItemValue) as ValueSum");
foreach (var r in query)
{
Console.WriteLine("{0},{1}", r["ItemID"], r["ValueSum"]);
}
/*
a,23
b,8
c,23
*/
SELECT
1 AS [C1],
[GroupBy1].[K1] AS [ItemID],
[GroupBy1].[A1] AS [C2]
FROM ( SELECT
  [Extent1].[ItemID] AS [K1],
  SUM([Extent1].[ItemValue]) AS [A1]
  FROM [dbo].[DBItemList] AS [Extent1]
  GROUP BY [Extent1].[ItemID]
) AS [GroupBy1]
SELECT it.ItemID,Sum(it.ItemValue) as ValueSum
FROM ( [DBItemList] ) AS it
GROUP BY it.ItemID

  Include(path)

  加载关联数据,参数为实体的[导航属性]的字串,调用Include("导航属性")后,关联数据会加载,这样就不用在[实体.导航属性]上调用Load()方法

ObjectQuery<T> Include(string path);
myContext context = new myContext();
  
var r = context.DBItem.Include("DBItemList");
foreach (var dbitem in r)
{
foreach (var dbitemlist in dbitem.DBItemList)
{
Console.WriteLine("{0},{1}", dbitemlist.NameID, dbitemlist.ItemValue);
}
}

  效果与下例相同

myContext context = new myContext();
  
var r = context.DBItem;
foreach (var dbitem in r)
{
dbitem.DBItemList.Load();
foreach (var dbitemlist in dbitem.DBItemList)
{
Console.WriteLine("{0},{1}", dbitemlist.NameID, dbitemlist.ItemValue);
}
}

  esql注释,成员访问,分行

 

注释--
成员访问.
分行;

 

       esql运算符 算术运算符

+
-
*
/
%
-

 

  比效运算符

等于=
大于>
大于等于>=
空判断IS NOT NULL

  IS NULL

小于<
小天等于<=
不等于!=

  <>

  字符比效

LIKE ''

  NOT LIKE ''

% :

  _ :

  [ ] :

  [^] :

 

  逻辑运算符

AND

  &&

NOT

  !

OR

  ||

 

区间

  

 

  BETWEEN

  之间

BETWEEN n AND m
NOT BETWEEN n AND m

myContext context = new myContext();
  
string esql = "SELECT VALUE it FROM [DBItemList] AS it WHERE it.ItemValue BETWEEN 2 and 4";
  
ObjectQuery<DBItemList> query = context.CreateQuery<DBItemList>(esql);
  
foreach (DBItemList r in query)
{
Console.WriteLine("{0},{1}", r.ItemID, r.ItemValue);
}

myContext context = new myContext();
  
ObjectQuery<DBItemList> query = context.DBItemList.Where(" it.ItemValue not BETWEEN 2 and 4");
  
foreach (DBItemList r in query)
{
Console.WriteLine("{0},{1}", r.ItemID, r.ItemValue);
}

  IN

  在集合中

IN {v,v}
NOT IN{v,v}

myContext context = new myContext();
  
string esql = "SELECT VALUE it FROM [DBItemList] AS it WHERE it.ItemValue IN {1,2,3}";
  
ObjectQuery<DBItemList> query = context.CreateQuery<DBItemList>(esql);
  
foreach (DBItemList r in query)
{
Console.WriteLine("{0},{1}", r.ItemID, r.ItemValue);
}

myContext context = new myContext();
  
ObjectQuery<DBItemList> query = context.DBItemList.Where("it.ItemValue not IN {1,2,3}");
  
foreach (DBItemList r in query)
{
Console.WriteLine("{0},{1}", r.ItemID, r.ItemValue);
}

  EXISTS

  存在

EXISTS(select from)
NOT EXISTS(select from)

myContext context = new myContext();
  
string esql = "SELECT VALUE it FROM [DBItemList] AS it WHERE exists(Select VALUE it2 From DBItem as it2 Where it2.ItemID=it.ItemID )";
  
ObjectQuery<DBItemList> query = context.CreateQuery<DBItemList>(esql);
  
foreach (DBItemList r in query)
{
Console.WriteLine("{0},{1}", r.ItemID, r.ItemValue);
}

myContext context = new myContext();
  
ObjectQuery<DBItemList> query = context.DBItemList.Where("exists(Select VALUE it2 From DBItem as it2 Where it2.ItemID=it.ItemID )");
  
foreach (DBItemList r in query)
{
Console.WriteLine("{0},{1}", r.ItemID, r.ItemValue);
}

分页

SELECT VALUE it FROM ( [DBItemList] ) AS it
ORDER BY it.ItemValue
SKIP 5
LIMIT 3

  集合运算

  

  Union

  (合集)

  连接不同集合

UNION --自动过滤相同项
UNION ALL --两个集合的相同项都会返回

myContext context = new myContext();
  
string esql = "(select value it from myContext.DBItemList as it where it.ItemID == 'c' || it.ItemID == 'a' ) UNION (select value it from myContext.DBItemList as it where it.ItemID == 'c' || it.ItemID == 'b' )";
  
ObjectQuery<DBItemList> query = context.CreateQuery<DBItemList>(esql);
  
foreach (DBItemList r in query)
{
Console.WriteLine("{0},{1}", r.ItemID, r.ItemValue);
}

EXCEPT

  (左并集)

  从集合中删除其与另一个集合中相同的项

myContext context = new myContext();
  
string esql = "(select value it from myContext.DBItemList as it where it.ItemID == 'c' || it.ItemID == 'a' ) EXCEPT (select value it from myContext.DBItemList as it where it.ItemID == 'c' || it.ItemID == 'b' )";
ObjectQuery<DBItemList> query = context.CreateQuery<DBItemList>(esql);
  
foreach (DBItemList r in query)
{
Console.WriteLine("{0},{1}", r.ItemID, r.ItemValue);
}

INTERSECT

  (交集)

  获取不同集合的相同项

myContext context = new myContext();
  
string esql = "(select value it from myContext.DBItemList as it where it.ItemID == 'c' || it.ItemID == 'a' ) INTERSECT (select value it from myContext.DBItemList as it where it.ItemID == 'c' || it.ItemID == 'b' )";
ObjectQuery<DBItemList> query = context.CreateQuery<DBItemList>(esql);
  
foreach (DBItemList r in query)
{
Console.WriteLine("{0},{1}", r.ItemID, r.ItemValue);
}

  ANYELEMENT

  集合中的第一个

myContext context = new myContext();
  
string esql = "ANYELEMENT(select value it from myContext.DBItemList as it where it.ItemID == 'a') ";
ObjectQuery<DBItemList> query = context.CreateQuery<DBItemList>(esql);
  
//如果集合中有两个以上,只返回第一个到集合中
foreach (DBItemList r in query)
{
Console.WriteLine("{0},{1}", r.ItemID, r.ItemValue);
}

SELECT
[Element1].[AutoId] AS [AutoId],
[Element1].[NameID] AS [NameID],
[Element1].[ItemID] AS [ItemID],
[Element1].[ItemValue] AS [ItemValue]
FROM ( SELECT cast(1 as bit) AS X ) AS [SingleRowTable1]
LEFT OUTER JOIN (SELECT TOP (1)
  [Extent1].[AutoId] AS [AutoId],
  [Extent1].[NameID] AS [NameID],
  [Extent1].[ItemID] AS [ItemID],
  [Extent1].[ItemValue] AS [ItemValue]
  FROM [dbo].[DBItemList] AS [Extent1]
  WHERE [Extent1].[ItemID] = 'a' ) AS [Element1] ON 1 = 1

  OVERLAPS

  两个集合是否有相交部份

myContext context = new myContext();
  
string esql = "(select value it from myContext.DBItemList as it where it.ItemID == 'c' || it.ItemID=='b' ) OVERLAPS (select value it from myContext.DBItemList as it where it.ItemID == 'a' || it.ItemID=='b')";
ObjectQuery<bool> query = context.CreateQuery<bool>(esql);
  
foreach (bool r in query)
{
Console.WriteLine(r);
}
//print: True

SELECT
CASE WHEN ( EXISTS (SELECT
  cast(1 as bit) AS [C1]
  FROM (SELECT
    [Extent1].[AutoId] AS [AutoId],
    [Extent1].[NameID] AS [NameID],
    [Extent1].[ItemID] AS [ItemID],
    [Extent1].[ItemValue] AS [ItemValue]
    FROM [dbo].[DBItemList] AS [Extent1]
    WHERE ([Extent1].[ItemID] = 'c') OR ([Extent1].[ItemID] = 'b')
  INTERSECT
    SELECT
    [Extent2].[AutoId] AS [AutoId],
    [Extent2].[NameID] AS [NameID],
    [Extent2].[ItemID] AS [ItemID],
    [Extent2].[ItemValue] AS [ItemValue]
    FROM [dbo].[DBItemList] AS [Extent2]
    WHERE ([Extent2].[ItemID] = 'a') OR ([Extent2].[ItemID] = 'b')) AS [Intersect1]
)) THEN cast(1 as bit) WHEN ( NOT EXISTS (SELECT
  cast(1 as bit) AS [C1]
  FROM (SELECT
    [Extent3].[AutoId] AS [AutoId],
    [Extent3].[NameID] AS [NameID],
    [Extent3].[ItemID] AS [ItemID],
    [Extent3].[ItemValue] AS [ItemValue]
    FROM [dbo].[DBItemList] AS [Extent3]
    WHERE ([Extent3].[ItemID] = 'c') OR ([Extent3].[ItemID] = 'b')
  INTERSECT
    SELECT
    [Extent4].[AutoId] AS [AutoId],
    [Extent4].[NameID] AS [NameID],
    [Extent4].[ItemID] AS [ItemID],
    [Extent4].[ItemValue] AS [ItemValue]
    FROM [dbo].[DBItemList] AS [Extent4]
    WHERE ([Extent4].[ItemID] = 'a') OR ([Extent4].[ItemID] = 'b')) AS [Intersect2]
)) THEN cast(0 as bit) END AS [C1]
FROM ( SELECT cast(1 as bit) AS X ) AS [SingleRowTable1]

  Set

  去掉重复项

myContext context = new myContext();
  
string esql = "set(select value it.ItemID from myContext.DBItemList as it)";
ObjectQuery<string> query = context.CreateQuery<string>(esql);
  
foreach (string r in query)
{
Console.WriteLine(r);
}
//去掉了重复项

SELECT
[Distinct1].[ItemID] AS [ItemID]
FROM ( SELECT DISTINCT
  [Extent1].[ItemID] AS [ItemID]
  FROM [dbo].[DBItemList] AS [Extent1]
) AS [Distinct1]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
内容如下:<br>ado.net 概述 <br>ado.net 的设计目标 <br>ado.net 结构 <br>.net 数据提供程序 <br>ado.net dataset <br>为 .net 数据提供程序编写通用代码 <br>ado.net 示例应用程序 <br>使用.net数据提供程序访问数据 <br>使用 ado.net 连接到数据源 <br>执行命令 <br>使用datareader检索数据 <br>将存储过程用于命令 <br>从数据库中获取单个值 <br>从数据库中获取blob 值 <br>执行数据库操作和修改数据 <br>从sql server中以xml形式获取数据 <br>从dataadapter填充 dataset <br>使用dataadapter和dataset更新数据库 <br>向dataset添加现有约束 <br>设置datatable和datacolumn映射 <br>将参数用于dataadapter <br>输入和输出参数及返回值 <br>自动生成的命令 <br>使用dataadapter 事件 <br>从数据库中获取架构信息 <br>执行事务 <br>.net数据提供程序的代码访问安全性 <br>创建和使用 dataset <br>创建 dataset <br>向 dataset 添加 datatable <br>添加表间关系 <br>导航表间关系 <br>将 dataset 与现有数据一起使用 <br>合并 dataset 内容 <br>复制 dataset 内容 <br>使用 dataset 事件 <br>使用类型化的 dataset <br>xml 和 dataset <br>diffgram <br>从 xml 中加载 dataset <br>以 xml 数据形式编写 dataset <br>从 xml 中加载 dataset 架构信息 <br>以xml架构(xsd)形式编写dataset架构信息 <br>使 dataset 与 xmldatadocument 同步 <br>嵌套的 datarelation <br>从xml架构(xsd)生成dataset关系结构 <br>将xml架构(xsd)约束映射到dataset 约束 <br>从xml架构(xsd)生成dataset关系 <br>了解约束和关系之间的相互关系 <br>从xml推断dataset关系结构 <br>创建和使用数据表 <br>创建数据表 <br>定义数据表的架构 <br>在数据表中操作数据 <br>创建和使用dataview <br>创建dataview <br>使用dataview对数据排序和筛选 <br>使用dataview查看数据 <br>使用dataview修改数据 <br>使用dataview事件 <br>使用dataviewmanager设置默认表视图据 <br>从ado.net访问ado记录集或记录 <br>ado.net方案示例 <br>检索“标识”或“自动编号”值 <br>开放式并发 <br>从 xml web services 使用 dataset <br>查询结果分页 <br>实现.net数据提供程序 <br>.net 数据提供程序实现入门 <br>实现连接 <br>实现命令 <br>实现 datareader <br>实现 dataadapter <br>示例 .net 数据提供程序 <br>数据集 <br>数据集介绍 <br>用于创建数据集的visual studio工具 <br>用组件设计器创建类型化数据集 <br>用表达式创建数据集列 <br>将表添加到现有数据集 <br>将现有类型化数据集添加到窗体或组件 <br>将非类型化数据集添加到窗体或组件 <br>演练:将数据源表映射到数据集表 <br>数据适配器 <br>数据适配器介绍 <br>数据适配器命令中的参数 <br>数据适配器中的表映射 <br>创建数据适配器 <br>为数据适配器配置参数 <br>将数据源列映射到数据集数据表列 <br>预览数据适配器的结果 <br>数据连接 <br>sqlconnection 概述 <br>sqlcommand 概述
.NET Entity Framework(EF)是微软提供的一种对象关系映射(ORM)框架,用于简化和加速开发者与数据库之间的交互。它允许开发者使用面向对象的方式来操作数据库,而无需直接编写SQL语句。以下是一些与.NET Entity Framework相关的基本知识: 1. 什么是.NET Entity Framework? .NET Entity Framework是一个开源的ORM框架,它允许开发者通过定义实体类和关系来操作数据库。它提供了一个对象关系映射器,可以将数据库表映射到.NET实体类,使开发者可以使用面向对象的思维来操作数据库。 2. Entity Framework有哪些核心组件? Entity Framework包括以下核心组件: - DbContext:表示数据库上下文,用于管理实体对象与数据库之间的交互。 - DbSet:表示数据库中的实体集合,用于查询、插入、更新和删除实体。 - Entity:表示映射到数据库表的实体类。 - LINQ to Entities:用于编写查询语句,将LINQ查询转换为SQL语句并执行。 3. 如何使用Entity Framework进行数据库操作? 使用Entity Framework进行数据库操作通常包括以下步骤: - 定义实体类:创建表示数据库表的实体类。 - 创建DbContext:继承自DbContext的类,表示数据库上下文。 - 配置映射关系:使用Fluent API或属性注解来配置实体类与数据库表之间的映射关系。 - 执行数据库操作:使用DbContext的方法(如SaveChanges、Add、Remove等)来执行对数据库的增删改查操作。 4. Entity Framework支持哪些数据库提供程序? Entity Framework支持多种数据库提供程序,包括SQL Server、MySQL、Oracle、SQLite等。可以根据需要选择合适的数据库提供程序。 5. 如何进行查询操作? 使用Entity Framework可以使用LINQ查询语法或方法链式调用来进行查询操作。通过DbContext的DbSet属性获取实体集合,然后可以使用LINQ查询来过滤、排序和投影数据。 6. 如何进行数据迁移? 数据迁移是Entity Framework提供的一种机制,用于管理数据库结构的变更。可以使用命令行工具或Package Manager Console来创建和应用数据迁移脚本,以保持数据库结构与代码模型的一致性。 .NET Entity Framework是一个功能强大且广泛使用的ORM框架,它简化了与数据库的交互,提高了开发效率。建议深入学习和掌握Entity Framework的各种特性和用法,以便在实际项目中充分发挥其优势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝图

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值