Tag: ado.net

entity framework使用错误的连接提供程序

我试图使用entity framework5(代码优先)的ASP.NET Web窗体应用程序,我以前有一个使用MySQL连接运行的基本实现,我也成功使用SQL Server Compact 4的桌面应用程序。 我遇到的问题是,使用EF5我收到错误 在配置中找不到指定的商店提供商,或者无效。 这是非常小的帮助。 升级到EF6-rc1给了我更有用的错误 具有不变名称“MySql.Data.MySqlClient”的ADO.NET提供程序未在计算机或应用程序配置文件中注册,或者无法加载。 有关详细信息,请参阅内部exception 至少我现在知道“问题”是什么。 我遇到的问题是我从项目中删除了所有MySQL的痕迹,没有理由为什么项目应该尝试加载MySQL提供程序。 这些是我的web.config文件的摘录,如果有任何其他相关部分可能指向解决方案,请告诉我。 我已经在解决方案中对MySQL这个词进行了文本搜索,并且没有对MySQL的引用。 我已经从源代码控制中检查了项目的干净版本,以确保在清除项目构建文件时我没有错过任何文件。 任何人都可以提供任何线索,我应该在哪里确定为什么EF坚持加载MySQL提供商? 问候,安东尼 * 编辑:*只是添加在第一次访问数据库上下文时抛出exception,从堆栈跟踪中初始化数据库时抛出exception。 我也注意到一些非常奇怪的东西; 正确创建数据库文件,似乎EF然后拒绝使用它并尝试使用MySQL。

如何判断用户是否使用bindingsource修改了数据?

我有一个DataGridView绑定到绑定到List的绑定源。 用户单击转到带有文本框等的表单的行。文本框是数据绑定的,如下所示: if (txtID.DataBindings.Count == 0) txtID.DataBindings.Add(“Text”, bindingSource, “Title”); 我希望能够检测到用户在单击关闭按钮时是否修改了控件中的任何数据,因此我可以提示他们说“您有未保存的工作。是否要保存?” 如何在绑定源上检测到这一点? 更新:我已经知道我可以使用bindingSource.EndEdit()将更改推送到列表中的项目。 在我的项目中,我可以说,如果Dirty抛出一个Messagebox但是如果他们点击“No”来保存信息,则CancelEdit不起作用。

全外连接,在2个数据表上,带有列列表

我有2个数据表,我不知道他们的数据列列表。 必须在运行时提取此列表,并将其用于完整外部联接。 使用这些列时,需要合并两个表之间的列,并且我需要显示所有数据。 直到现在我正在做的是 使用intersect获取公共列,并实现IEqualityComparer 使用这些列创建一个新的数据表,以便将2个数据表合并到此新表中 但是,我在第二步遇到了Linq的问题。 直到现在我有: 获取常见列 //获取常用列 var commonColumns = dt1.Columns.OfType()。Intersect(dt2.Columns.OfType(),new DataColumnComparer()); 创建新数据表 //创建将发送给用户的结果 DataTable结果= new DataTable(); //添加两个表中的所有列 result.Columns.AddRange( dt1.Columns.OfType() .Union(dt2.Columns.OfType(),new DataColumnComparer()) .Select(c => new DataColumn(c.Caption,c.DataType,c.Expression,c.ColumnMapping))。ToArray()); 如何从运行时提取的数据列表中动态获取有效的全外连接?

将字节数组从Oracle RAW转换为System.Guid?

我的应用程序使用DataReader在ADO.NET中编写的自定义数据访问层与Oracle和SQL Server数据库进行交互。 现在我遇到了GUID(我们用于主键)和Oracle RAW数据类型之间转换的问题。 插入oracle很好(我只是在System.Guid上使用ToByteArray()方法)。 当我从数据库加载记录时,问题是转换回System.Guid。 目前,我正在使用从ADO.NET获得的字节数组传递给System.Guid的构造函数。 这似乎有效,但数据库中出现的Guid与我以这种方式生成的Guids不对应。 我无法更改数据库架构或查询(因为它重用于SQL Server)。 我需要代码将Oracle中的字节数组转换为正确的Guid。

仅将少数列的数据复制到另一个数据表

我有一个场景,我得到一个包含65列和100行的数据表。 我需要创建一个包含所有100行的数据表,即与原始数据表相同但在原始表中只有65列中的5列。 有没有办法实现这个没有循环?

SqlCommand对象,CommandTimeout的时长是多少?

在使用SqlCommand对象时,如何确定使用超时的时间长度? 在我正在处理的部分代码上(由其他人编写)我有: cmd.CommandTimeout = 60; 我觉得这很短暂。 但是,我在论坛上看到一些人谈论将它设置为30000,这似乎太长了。 我怎么知道什么是我的应用程序的最佳选择?

将byte 数组转换为DataTable

我在类型为varbinary的字段中将DataTable类型的对象保存到SQL 2005数据库中。 我想要找回它,但我无法输入它。 这就是我拯救它的方式。 MemoryStream memStream = new MemoryStream(); StreamWriter sw = new StreamWriter(memStream); sw.Write(dt); con.Open(); using (SqlCommand cmd = new SqlCommand(“INSERT INTO Tables(TableName, TableData, QuestionID) VALUES (@TableName, @TableData, @QuestionID)”, con)) { cmd.Parameters.Add(“@TableName”, SqlDbType.VarChar).Value = “a new table”; cmd.Parameters.Add(“@TableData”, SqlDbType.VarBinary,Int32.MaxValue).Value = memStream.GetBuffer(); cmd.Parameters.Add(“@QuestionID”, SqlDbType.VarChar).Value = “2”; cmd.ExecuteNonQuery(); } ‘dt’是DataTable对象实例。

如何使SqlDataReader.ReadAsync()异步运行?

当调用SQL Server实际执行需要花费时间的事情时, SqlDataReader.ReadAsync()为我同步运行。 有没有办法强制它以异步方式运行,或者是我在Task.Run()调用它的唯一选择? 这是一个复制品。 它使用winforms来certificate该调用阻止了GUI线程。 请注意,T-SQL必须实际执行某些操作 – 使用WAITFOR DELAY ’00:00:20’无法重现 。 using System; using System.Configuration; using System.Data.Common; using System.Data.SqlClient; using System.Threading.Tasks; using System.Windows.Forms; static class SqlDataReaderReadAsyncProgram { static async void Form_Shown(object sender, EventArgs e) { var form = (Form)sender; // Declare your connection string in app.config like // using (DbConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings[0].ConnectionString)) […]

.NET中的SQL注入预防

我通常在.NET中编写我的SQL sql.Append(“SELECT id, code, email FROM mytable WHERE variable = @variable “); 然后做这样的事情: using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[ConfigurationManager.AppSettings[“defaultConnection”]].ConnectionString)) { using (SqlCommand myCommand = new SqlCommand(sql.ToString(), conn)) { myCommand.Parameters.AddWithValue(“@variable”, myVariableName”); … 但是当我得到的数据直接来自数据库时,我是否也应该这样做addParameter? likesql.Append(string.Format(“SELECT group_id, like_text FROM likeTerms ORDER BY group_id ASC “)); DataTable dtLike = SqlHelper.GetDataTable(likesql.ToString()); foreach (DataRow dr in dtLike) { buildsql.Append(“…. varId = […]

关闭SqlConnection和SqlCommand c#

在我的DAL中,我写这样的查询: using(SQLConnection conn = “connection string here”) { SQLCommand cmd = new (“sql query”, conn); // execute it blah blah } 现在我发现我没有明确关闭SQLCommand对象。 现在我知道’using’块将处理SQLConnection对象,但这还会处理SQLCommand对象吗? 如果不是我有一个严重的问题。 我必须在SQLCommand上使用’使用’成千上万行代码,或者在数百种方法上执行cmd.Close()。 请告诉我,如果使用或关闭命令将提供更好的Web应用程序内存管理?