首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在EF CTP4中执行自定义SQL

如何在EF CTP4中执行自定义SQL
EN

Stack Overflow用户
提问于 2010-12-03 06:14:15
回答 3查看 2.6K关注 0票数 2

使用实体框架CPT4有没有执行自定义命令或脚本的方法?

例如:

代码语言:javascript
复制
_dbSet.Provider.Execute("Truncate Table Users");

FWIW;我将在单元测试的类设置中使用它,并使用干净的数据设置表。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-03 06:26:56

尝试ObjectContext.ExecuteStoreCommand方法。

使用现有连接直接对数据源执行任意命令。

调用ExecuteStoreCommand方法等效于调用DbCommand类的ExecuteNonQuery方法。

其他一些有用的信息:Tip 41 – How to execute T-SQL directly against the database

下面是ExecuteStoreCommand的示例

代码语言:javascript
复制
// 10% inflation day! 
ctx.ExecuteStoreCommand("UPDATE Products SET Price = Price * 1.1");
票数 1
EN

Stack Overflow用户

发布于 2010-12-03 06:17:20

也许可以看看ndbunit来设置和拆卸您的数据库以进行单元测试

编辑:

这就是我们在应用程序上用来单元/集成测试我们的数据访问层的东西,它实际上是使用EF4实现的。它相当简单,并提供了一种注入和清理可重复测试数据的好方法。

但是,我们还需要使用EF删除/截断应用程序逻辑本身中的表。因此,为了回答您最初的问题,我们将"delete from table“脚本合并到一个存储过程中,然后使用

代码语言:javascript
复制
_dataContext.ExecuteFunction("SchemaName.MyTableDeleteProc");
票数 0
EN

Stack Overflow用户

发布于 2010-12-03 06:19:22

我能想到的最快的变通方法是使用存储过程。另一种选择是使用批量删除描述的http://www.aneyfamily.com/terryandann/post/2008/04/Batch-Updates-and-Deletes-with-LINQ-to-SQL.aspx <--这里,但代码是基于Linq2Sql,而不是EF,你将不得不移植它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4340529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档