发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
首先来简单的复习一下如何使用Code First。
第一步还是先建立一个控制台的应用程序,然后通过Nuget添加Entity Framework。那么同时会给packages.config和App.config添加相应的配置。
第二步添加一个数据操作上下文实体类。添加两个构造函数,并添加一个Person的实体类。 在App.config的配置文件中添加相应的数据链接配置。
第三步在调用即可生成相应的数据库。
EFContext.cs
public
class
EFContext:DbContext
{
EFContext()
:
base
(
"EFContext"
)
{ }
EFContext(
string
connectionstring)
(connectionstring)
}
DbSet<Person> Persons {
get
;
set
; }
App.config
<?xml version=
"1.0"
encoding=
"utf-8"
?>
<configuration>
<configSections>
<!-- For more information
on
Entity Framework configuration, visit http:
//go.microsoft.com/fwlink/?LinkID=237468 -->
<section name=
"entityFramework"
type=
"System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
requirePermission=
"false"
/>
</configSections>
<connectionStrings>
<add name=
connectionString=
"Data Source=.;Database=EFContext;UID=sa;PWD=sa123;"
providerName=
"System.Data.SqlClient"
></add>
</connectionStrings>
<startup>
<supportedRuntime version=
"v4.0"
sku=
".NETFramework,Version=v4.5"
</startup>
<entityFramework>
<defaultConnectionFactory type=
"System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"
>
<parameters>
<parameter value=
"v11.0"
</parameters>
</defaultConnectionFactory>
</entityFramework>
</configuration>
package.config
<packages>
<package id=
"EntityFramework"
version=
"5.0.0"
targetFramework=
"net45"
</packages>
然后简单的添加了一个实体类
Person
int
PersonId {
PersonName {
Age {
Address {
Email {
最终进行调用
static
void
Main(
[] args)
using
var
db =
new
))
persons = db.Persons.Where(t => t.PersonName ==
"aehyok"
).OrderByDescending(t => t.PersonId).ToList();
foreach
p
in
persons)
Console.WriteLine(
"The PersonName is {0} and Age {1}"
, p.PersonName, p.Age);
Console.ReadLine();
运行后控制台没有数据显示,但是在数据库里可以查看到相应的数据库EFContext和数据表People。
现在我们通过数据库直接为上面建立的数据库EFContext中的People表手动添加了几条数据。
然后重新运行程序。可以发现有数据了。
此时可以发现我们的第一个简答的查询语句已经实现了。
一个数据库上下文的生命周期随着该对象的创建而开始,随着对象的释放(或GC回收)而结束,因此建议在开发过程中使用“Using”编码方式,这样就可以免去手动释放对象的操作。另外对于数据库连接的管理在EF中是透明的,我们一般不需要手动进行处理,当查询一个对象时打开连接当处理完查询的结果集之后会自动关闭连接。
Linq To Entity表达式查询
查询表达式是C#3.0新增的功能,它是由一组类似于T-SQL或XQuery声明性语句组成,CLR并不能直接读取这种查询表达式而是在编译时转换为对应的方法调用。如下面的例子:
persons =
from
db.Persons
where
p.PersonName ==
orderby
p.PersonId
descending
select
p;
得到的结果同上面是一致的。
基于方法的查询
基于方法的查询事实上是一组对象的扩展方法,同Linq查询不同的是这些方法可以直接被CLR识别并运行。
例如上面的方法我们可以转换为如下代码,他们的效果是一样的,返回的都是“IQueryable”对象,这里的代码其实也就是我们开始为创建数据库测试的代码
当然执行的结果还是一样的。
原生SQL的查询
EF还支持原生SQL查询例如:
persons = db.Persons.SqlQuery(
"select * from EFContext..People where PersonName='aehyok'"
);
可以直接通过SQL语句的拼接额,当然这里只是做了最简单的实例。
不仅如此,EF还支持非实体类型的查询:
persons = db.Database.SqlQuery<
>(
"select PersonName from EFContext..People where PersonName='aehyok'"
"The PersonName is {0} "
, p);
当然也支持无返回值的SQL命令:
persons = db.Database.ExecuteSqlCommand(
"update EFContext..People set Address='中国' where PersonName='aehyok'"
来自: 昵称10504424 > 《工作》
0条评论
发表
请遵守用户 评论公约
C# Dictionary 终极使用方法
C# 7
static void Main(string[] args) { Action<string, string> totalLength = (s1, s2) => { Console.static void Main(string[] args) { Action<int> cube = x => { Console.static v...
C# 数组的交集、差集、并集
C# 数组的交集、差集、并集。14 15 var z1 = x.16 Console.WriteLine("Except: {0}",z1.17 foreach (var i in z1)18 {19 Cons...
实现一个数的N次方
Console.
Datatable的Select()方法简介
DataTable是我们在进行开发时经常用到的一个类,并且经常需要对DataTable中的数据进行筛选等操作,下面就介绍一下Datatable中经常用到的一个方法——Select,微软提供了四个函数的重载,分别是。Select...
《C#语言程序设计项目教程》第4章 循环流程控制语句写字字帖
选填
【转】【C#】迭代器IEnumerable和IEnumerator
这条语句告诉编译器这不是一个普通的方法,而是一个需要执行的迭代块(yield block),他返回一个IEnumerator对象,你能够使用迭代块来...
C#中ArrayList类的使用方法
C#中ArrayList类的使用方法。ArrayList list = new ArrayList(arr);classProgram { static void Main(string[] args) { ArrayList arr = new ArrayList();Add("C#学习&q...
C#(Csharp)基础教程(中)(菜鸟教程笔记)
循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的一般形式: 2.1 循环类型 2.1.1 while 循环。2 是质数3 ...
微信扫码,在手机上查看选中内容