Tag: ado.net

DataTable的线程安全性

我曾经读过这个答案ADO.NET DataTable / DataRow Thread Safety ,并且无法理解一些东西。 特别是我无法理解[2]文章。 我需要使用什么样的包装? 谁能举个例子? 另外我无法理解作者的意思是谈论级联锁和完全锁定。 请举例。

在一次往返中执行多个SQL命令

我正在构建一个应用程序,我想将多个查询批处理到数据库的单个往返。 例如,假设单个页面需要显示用户列表,组列表和权限列表。 所以我存储了procs(或者只是简单的sql命令,比如“select * from Users”),我想执行其中的三个。 但是,为了填充这一页,我必须进行3次往返。 现在我可以编写单个存储过程(“getUsersTeamsAndPermissions”)或执行单个SQL命令“select * from Users; exec getTeams; select * from Permissions”。 但我想知道是否有更好的方法来指定在一次往返中进行3次操作。 好处包括更容易进行unit testing,并允许数据库引擎将查询并行化。 我正在使用C#3.5和SQL Server 2008。

无法找到请求的.Net Framework数据提供程序 – SQLite

我认为sqlite很简单,但它让我很难过。 我只想创建一个应用程序,我可以使用ado.net实体数据类连接到sqlite数据库。 我在运行Windows XP的虚拟计算机上测试应用程序时遇到此问题。 当我部署它们时,应用程序在我当前的计算机上以及我的笔记本电脑上运行良好。 以下是虚拟计算机上发生的情况: 该应用程序能够启动。 应用程序能够使用System.Data.SQLite与数据库进行交互 应用程序无法使用ADO.NET Entity数据模型连接到数据库 当我尝试连接时,我得到以下exception: 我知道有很多post谈论这个,大多数人都说你需要为Sqlite下载.NET提供程序。 我已经安装了sqlite-netFx40-setup-bundle-x86-2010-1.0.79.0.exe,我遇到了同样的问题。 我该怎么办? 编辑 我设法通过添加以下内容来建立连接: 到我的app.config文件。 问题是现在我无法选择数据也不能将记录插入数据库。 我尝试插入新记录时获得的例外情况是: 在“System.Data.SQLite.SQLiteFactory”类型的商店提供程序实例上调用“GetService”方法后返回null。 商店提供商可能无法正常运行。

如何在ADO.Net实体数据模型中为密码连接提供密码

我一直在关注如何创建OData服务的本教程。 http://www.hanselman.com/blog/CreatingAnODataAPIForStackOverflowIncludingXMLAndJSONIn30Minutes.aspx 并且它完美无瑕地工作……但是,在实体数据模型向导中,当它要求您“选择您的数据连接”时,它会向您发出此警告。 “此连接字符串似乎包含连接到数据库所需的敏感数据(例如,密码)。在连接字符串中存储敏感数据可能存在安全风险。是否要将此敏感数据包含在连接字符串中?” 如果我选择:“不,从连接字符串中排除敏感数据。我将在我的应用程序代码中设置它。” 我没有看到我能在哪里,“在我的应用程序代码中”插入密码。 (我公司将它们加密到注册表中) 另外,我需要连接多个数据库,具体取决于环境(Dev,CA或Prod),我需要知道连接字符串中引用了什么数据库才能获得正确的密码。 谢谢。

从SqlDataReader填充数组(或arraylist)

有没有办法通过SqlDataReader(或任何其他C#ADO.NET对象)填充数组而不循环遍历所有项目? 我有一个返回单个列的查询,我想将它放入一个字符串数组(或ArrayList,或List等)。

如何从C#连接到SQL数据库?

我正在尝试为我的家庭网络编写本地程序管理和安装系统,我想我已经确定了技术: C#/。NET / WPF为客户端 Lua用于安装脚本支持(通过LuaInterface) SQL Server Express用于维护程序数据库 但是我不确定具体用于将C#连接到数据库的具体内容。 .NET框架中是否有内置的东西? 如果您对我应该用于与所述数据库进行交互的内容有何建议,则可获得奖励积分。

如何将System.Type解析为System.Data.DbType?

在System命名空间中查找基类库类型的System.Data.DbType枚举值的最佳方法是什么?

我如何使`await …`使用`yield return`(即在迭代器方法中)?

我现有的代码看起来类似于: IEnumerable GetStuff() { using (SqlConnection conn = new SqlConnection(connectionString)) using (SqlCommand cmd = new SqlCommand(sql, conn) { conn.Open(); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { SomeClass someClass = f(reader); // create instance based on returned row yield return someClass; } } } 看来我可以通过使用reader.ReadAsync()获益。 但是,如果我只修改一行: while (await reader.ReadAsync()) 编译器通知我await只能在标记为async方法中使用,并建议我将方法签名修改为: async Task<IEnumerable> GetStuff() 但是,这样做会使GetStuff()无法使用,因为: GetStuff()的主体不能是迭代器块,因为Task<IEnumerable>不是迭代器接口类型。 我确信我错过了异步编程模型的关键概念。 […]

EntityFramework VS纯Ado.Net

EF是如此广泛使用的员工,但我没有意识到我应该如何使用它。 我用不同的方法在不同的项目上遇到了很多关于ef的问题。 所以有些问题汇集在我脑海里。 答案让我使用纯粹的ado.net和存储过程。 所以问题是: 如何在n层应用程序中处理EF? 例如,我们有一些带有EF的DAL。 我看到很多文章和项目使用存储库,单元工作模式作为EF的某种抽象。 我认为这样的方法会杀死大多数提高开发速度并导致一些事情的好处: 重新映射EF负载导致某些DTO杀死性能(调用一些select来获取表数据 – 第一个循环,第二个循环 – 将结果映射到ef生成的某些复合类型,next – 使用linq过滤映射数据,最后映射它某些DTO)。 完全重新映射到DTO是最大的efs利益之一的杀手; 要么 导致EF(和它的版本 )和应用程序之间的强大凝聚力。 这将是类似于2层应用程序与dal和演示文稿与bll或dal与bll和演示文稿。 我想这不是最好的做法。 除了映射之外,还有与之前的事情相同的加载过程,因此再次出现性能问题。 我们可以尝试使用EF作为DAL而不需要任何抽象。 但我们会以其他方式得到类似的问题。 我应该为每个app \ thread \ atomic操作使用一个上下文吗? 使用方法 – 每个app \ thread一个上下文可能略微提高性能和调用导航属性的可能性,但我们遇到另一个问题 – 更新此上下文并在上下文中增加加载的数据,我也不确定每个app一个dbcontext的并发性线。 使用每个操作的上下文将导致我们将ef结果重新映射到我们的DTO。 所以你看到我们再次回到问题1。 我们可以尝试仅使用EF + SP吗? 我们再次提出以前的问题。 如果不使用大部分function,使用ef的原因是什么? 所以,EF是开始项目的好方法。 当我们几乎没有屏幕和粗暴操作时,它非常方便。 但接下来呢? 所有这些文字都只是未分类的想法。 我知道纯粹的ado.net会带来另一种挑战。 那么,您对此主题有何看法?

如何将List 转换为Sql In语句的SqlParameter?

我似乎对如何使用SqlParameter执行In语句感到困惑。 到目前为止,我有以下代码: cmd.CommandText = “Select dscr from system_settings where setting in @settings”; cmd.Connection = conn; cmd.Parameters.Add(new SqlParameter(“@settings”, settingList)); reader = cmd.ExecuteReader(); settingsList是List 。 当cmd.ExecuteReader() ,由于无法将List映射到“已知的提供者类型”,因此出现ArgumentException 。 如何(安全地)使用SqlCommand执行In查询?