EF CodeFirst关于数据库的一些基本操作
2016-11-25 10:28
405 查看
一、数据库初始化策略
数据库初始化有4种策略
策略一:数据库不存在时重新创建数据库
策略二:每次启动应用程序时创建数据库
策略三:模型更改时重新创建数据库
策略四:从不创建数据库
二、执行SQL语句
有时候在code first中也会执行sql来做查询,或者是查询视图。
查询结果如下图所示:
上面的例子中Person是一个表,查询视图的方法与之相同。
三、执行存储过程
有时候使用sql能解决的问题使用ef就不那么简单,比如查找树的某个节点的所有父节点或所有子节点。而这种情况如果使用存储过程就会很简单。
下面是一个简单的存储过程:
下面EF执行存储过程:
执行结果如下图所示:
上面的都是查询使用的都是SqlQuery,如果需要更新操作可以使用ExecuteSqlCommand方法。
执行结果如下图所示:
打开数据库,查看执行结果如下图所示:
从上面截图可以看到已经将personId=1000的Name改为李四,之前都是王二。
数据库初始化有4种策略
策略一:数据库不存在时重新创建数据库
Database.SetInitializer<EFCodeFirstDbContext>(new CreateDatabaseIfNotExists<EFCodeFirstDbContext>());
策略二:每次启动应用程序时创建数据库
Database.SetInitializer<EFCodeFirstDbContext>(new DropCreateDatabaseAlways<EFCodeFirstDbContext>());
策略三:模型更改时重新创建数据库
Database.SetInitializer<EFCodeFirstDbContext>(new DropCreateDatabaseIfModelChanges<EFCodeFirstDbContext>());
策略四:从不创建数据库
Database.SetInitializer<EFCodeFirstDbContext>(null);
二、执行SQL语句
有时候在code first中也会执行sql来做查询,或者是查询视图。
using (var db = new StudentDbContext()) { List<Person> persons = db.Database.SqlQuery<Person>("select * from Person where personId=@id", new SqlParameter("@id", "1000")).ToList(); foreach (var person in persons) { Console.WriteLine("{0} {1} {2} {3}", person.PersonId, person.Name, person.Age, person.Sex); } } Console.ReadLine();
查询结果如下图所示:
上面的例子中Person是一个表,查询视图的方法与之相同。
三、执行存储过程
有时候使用sql能解决的问题使用ef就不那么简单,比如查找树的某个节点的所有父节点或所有子节点。而这种情况如果使用存储过程就会很简单。
下面是一个简单的存储过程:
CREATE PROCEDURE TestProcedure @personId nvarchar(100) AS BEGIN select * from Person where PersonId=@personId; END GO
下面EF执行存储过程:
List<Person> persons = db.Database.SqlQuery<Person>("TestProcedure @personId", new SqlParameter("@personId", "1000")).ToList(); foreach (var person in persons) { Console.WriteLine("{0} {1} {2} {3}",person.PersonId,person.Name,person.Age,person.Sex); }
执行结果如下图所示:
上面的都是查询使用的都是SqlQuery,如果需要更新操作可以使用ExecuteSqlCommand方法。
int count = db.Database.ExecuteSqlCommand("update Person set Name=@name where PersonId=@personId", new[] { new SqlParameter("@name", "李四"), new SqlParameter("@personId", "1000") }); Console.WriteLine(count);
执行结果如下图所示:
打开数据库,查看执行结果如下图所示:
从上面截图可以看到已经将personId=1000的Name改为李四,之前都是王二。
相关文章推荐
- 关于在ASP.NET MVC 中使用EF的Code First的方式来读取数据库时的Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.
- EF Codefirst方式数据库维护操作
- EF6 学习笔记(一):Code First 方式生成数据库及初始化数据库实际操作
- 关于使用PDO连接数据库的一些基本操作
- 8天掌握EF的Code First开发系列之3 管理数据库创建,填充种子数据以及LINQ操作详解
- 对数据库中列的一些基本的操作的SQL命令
- 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等
- 关于字符串操作的一些常用户到的一些基本东西..
- sql2005对数据库的一些基本操作
- 关于iis一些基本操作
- 关于数据库的一些操作
- EF Code First数据库映射规则及配置
- 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等
- 数据库开发基本操作-关于sql server 2005 未开放1433端口的问题
- 一些数据库的基本操作
- EF Code First数据库连接配置
- Oracle有关于用户的一些基本操作
- 关于写程序时「对数据库操作」的一些总结。
- 数据库中对表的一些基本操作
- Asp.net MVC + MySQl + EF Code First 不能自动生成数据库