Tag: ado.net

CommandBehavior.SequentialAccess是否有任何性能提升?

我意识到我总是按索引返回的顺序读取我的字段(使用常量)。 所以据我所知,我的代码已经与CommandBehavior.SequentialAccess兼容。 如果我打开它会有任何好处吗? DataReader只是前传,只读是真正的性能增益吗?

ADO.NET DataTable约束如何影响性能?

对DataTable的约束(例如,PrimaryKey和UniqueContraint)使得选择效率与SQL Server中的相同吗? 或者他们唯一的目的是对数据实施规则? myDT.Constraints.Add(“PK”, myDT.Columns[“UniqueID”], true); //add a primary key myDT.Constrinats.Add(new UniqueConstraint(new DataColumn[] { //add a unique constraint for UserID myDT.Columns[“UserID”], myDT.Columns[“UniqueID”] })); 在通过UniqueID或UserID查找DataTable中的数据时,这些示例是否可能具有更好的性能?

更新大表(很多列)。 C#.NET

我必须更新一个包含超过270个更新字段的大表。 我是.NET的新手,需要建议在这种情况下使用什么更好:SqlCommand,某种内存映射表或DataSet,或者它是否存在使用来自DB的元数据的某种自动生成的对象? 请帮忙。 原因:我有一个旧的大型Delphi7应用程序,其中一部分负责监听socket上的一些数据包,这些数据包被编组到大型结构中,最后一步存储在DB中。 现在我将这部分移植到新的C#服务中,至少实际上我必须保留相同的逻辑。 问题是结构是BIG(超过220个字段),存储它的表有近300个字段。 从我的220个字段的结构中扣除/计算其他~50个字段,所有都应该在DB中更新。 实际的Delphi代码是丑陋的ant,它像桌子一样在几年内增长,如下所示: ‘UPDATE TABLE_NAME ‘ + ‘ MSG_TYPE = ‘ + IntToStr(integer(RecvSruct.MSG_TYPE)) + ‘ ‘ + ‘ ,SomeFLOATfield = ‘ + FloatToStr(RecvSruct.SomeFLOATfield) + ‘ ‘ + … //and other over 270 fileds here ‘WHERE ID = ‘ + IntToStr(obj.ID) 没有任何动态SQL等。实际上我无法改变数据库结构..所以我只能在代码中播放,我不确定是否有必要翻译代码。 表用于某些报告和统计信息。 一些计算/扣除的字段必须处理源代码中的一些常量。 使用开发工具:MS SQL Server 2000,C#.net2.0,VS2008

entity framework更改跟踪API和参考条目

希望在我的DbContext子类上编写通用审计代码。 foreach (var entry in this.ChangeTracker.Entries()) { if (entry.State == EntityState.Modified) { var entityProperties = entry.Entity.GetType().GetProperties(); foreach (var entityProperty in entityProperties) { DbMemberEntry propertyEntry = entry.Member(property.Name); if (propertyEntry is DbPropertyEntry) { // IsModified available } else if (propertyEntry is DbReferenceEntry) { // IsModified not available } } } } 1)如果我只更改引用属性,则entry.State值为“Unchanged”。 2)即使将第1点设置为“已修改”,DbReferenceEntry类似乎也没有IsModified属性,也没有原始值。 我认为这是可能的,因为EF必须跟踪这个。 有人可以帮忙吗? 谢谢,本

entity framework引用不会自动加载

在ADO.Netentity framework中,我有一个对象,它有4个对其他对象的引用。 出于某种原因,当我查询这些引用时,其中两个自动加载(如预期的那样),其中两个总是返回null。 奇怪的是,当我手动询问引用加载时,它们加载只是花花公子。 举个例子: if (account.HoldingEntity == null && account.HoldingEntityReference.EntityKey != null) { account.HoldingEntityReference.Load(); account.HoldingEntity = account.HoldingEntityReference.Value; } 当我第一次检查HoldingEntity它始终为null,但是Load将返回HoldingEntity而没有问题。 有什么线索吗? 谢谢!

如何使用SqlConnection.GetSchema()获取列主键约束

我有一些ADO.NET代码来动态检测数据库模式,我需要的是如何使用SqlConnection上的GetSchema方法获取唯一列约束和主键约束。 这是我的代码: conn.Open(); SqlCommand mSqlCommand = new SqlCommand(“sp_pkeys”, conn); mSqlCommand.CommandType = CommandType.StoredProcedure; mSqlCommand.Parameters.Add( “@table_name”, SqlDbType.NVarChar).Value = tableName; SqlDataReader mReader = mSqlCommand.ExecuteReader( (CommandBehavior.KeyInfo | CommandBehavior.SchemaOnly)); //ExecuteReader(); DataTable schema = mReader.GetSchemaTable(); mReader.Close(); conn.Close();

使用Enterprise库将数据插入SQL Server数据库的代码

我是C#Windows应用程序编码和使用企业库的新手。 我想使用Enterprise Library 4.1将记录插入SQL Server 2008数据库 我在SQLCommand和DBCommand之间混淆了哪一个使用以及何时使用。

如何使用poco实体生成器

我正在使用VS2010,我已下载C#POCO实体生成器并安装它,现在我想使用它。 我无法阅读完整的 1 ,我找不到任何其他好的东西,所以我自己去了 – 我已经创建了一个模型然后我正在创建新的POCO实体,但我得到了波纹管错误: Error 1 Running transformation: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. —> System.IO.FileNotFoundException: Unable to locate file at Microsoft.VisualStudio.TextTemplating.VSHost.TextTemplatingService.ResolvePath(String path) at Microsoft.VisualStudio.TextTemplating.VSHost.TextTemplatingService.ResolvePath(String path) — End of inner exception stack trace — at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner) at […]

在运行时设置强类型数据集连接字符串的最佳方法?

我的Windows窗体应用程序使用在Visual Studio中使用设计器创建的强类型数据集。 在运行时,我希望能够选择实时或测试数据库。 在运行时以编程方式为数据集设置连接字符串的最佳方法是什么?

使用带参数的命令时,临时表的“无效对象名称”

我正在创建一个临时表,并使用相同的命令和连接使用两个单独的语句填充它。 但是,如果我创建在创建之前插入参数的表,则会收到“无效的对象名称”。 如果我在创建后添加它,它工作正常。 临时表应该持续整个会话,因此当参数添加到命令对象时,我看不到它的重要性。 失败: using (SqlConnection conn = new SqlConnection(“Data Source=.;Initial Catalog=TEST;Integrated Security=True;”)) using (SqlCommand cmd = conn.CreateCommand()) { conn.Open(); cmd.Parameters.Add(new SqlParameter(“@ID”, 1234)); cmd.CommandText = “CREATE TABLE #Test (ID INT NOT NULL PRIMARY KEY, I INT NOT NULL)”; cmd.ExecuteNonQuery(); cmd.CommandText = “INSERT INTO #Test VALUES (@ID, 1)”; cmd.ExecuteNonQuery(); ….. more code that uses the […]