Tag: ado.net

重新加载实体和所有导航属性关联 – DbSetentity framework

我有实体关联刷新的问题。 当我得到一个像这样的实体: MyContext context = new MyContext(); Person myPerson = context.PersonSet.FirstOrDefault(); String myPersonName = myPerson.Name; Address myPersonAddress = myPerson.Address; 我找到了一个名为Address的关联和名为Name的属性的人。 如果我手动修改数据库中的数据,例如属性Name,我必须使用以下代码重新加载我的实体: context.Entry(myPerson).Reload(); 我有Name的新值。 但是,如果我为地址做同样的事情,它就不起作用。 我认为这是因为地址是一个协会财产。 我需要刷新它。 如何强制重新加载Address关联(以及Person类中的所有其他关联)? 编辑: 在同一个案例中,一个人可以拥有多个地址。 MyContext context = new MyContext(); Person myPerson = context.PersonSet.FirstOrDefault(); String myPersonName = myPerson.Name; List myPersonAddresses = myPerson.Addresses; 在这种情况下,它不是参考: context.Entry(myPerson).Reference(p => p.Address).Load(); // Address will be populated […]

在ExecuteReader()中使用CommandBehavior.CloseConnection的用途/优点是什么

任何人都可以告诉我什么是CommandBehavior.CloseConnection以及将此作为com.ExecuteReader(CommandBehavior.CloseConnection)的参数传递的用途/好处是什么?

为什么要使用Dapper? 任何人都可以评论Dapper Vs ADO.NET优点和缺点

我想了解一个人真的需要考虑使用Dapper的时间。 另外,我想了解比较Dapper Vs ADO.NET的优点和缺点

SqlConnection如何管理IsolationLevel?

这篇MSDN文章指出: 隔离级别具有连接范围范围,并且一旦设置为与SET TRANSACTION ISOLATION LEVEL语句的连接,它将保持有效,直到连接关闭或设置了另一个隔离级别。 关闭连接并返回到池时,将保留最后一个SET TRANSACTION ISOLATION LEVEL语句的隔离级别。 重新使用池连接的后续连接使用在连接池时生效的隔离级别。 SqlConnection类没有可以保持隔离级别的成员。 那么连接如何知道在哪个隔离级别运行? 我问这个的原因是因为以下情况: 我在Serializable模式下使用TransactionScope打开了一个事务,比如“T1”。 打开T1的连接。 T1完成/处理,连接返回连接池。 在同一连接上调用另一个查询(从连接池获取后),此查询以可序列化模式运行! 问题: 汇集连接如何知道与之相关的隔离级别? 如何将其还原回其他一些事务级别??? 解析度: 池化连接返回可序列化隔离级别的原因是由于以下原因: 你有一个连接池(让我们说CP1) CP1可能有50个连接。 从CP1中选择一个连接C1并使用Serializable执行它。 此连接现在已设置其隔离级别。 无论您做什么,都不会重置(除非此连接用于执行不同隔离级别的代码)。 执行查询后,C1(Serializable)返回CP1。 如果再次执行步骤1-4,则使用的连接可能是除C1之外的其他连接,假设为C2或C3。 因此,它的隔离级别也将设置为Serializable。 因此,慢慢地,Serialzable在CP1中设置为多个连接。 当您执行未进行显式隔离级别设置的查询时,从CP1选择的连接将决定隔离级别。 例如,如果此类查询请求连接并且CP1使用C1(Serializable)执行此查询,则此查询将在Serializable模式下执行,即使您未明确设置它。 希望能够澄清一些疑惑。 🙂

在Visual Studio中更新DataSet结构以匹配新的SQL数据库结构

在对SQL数据库结构进行一些更改(使用SQL Server Management Studio中的脚本)之后,如何在Visual Studio中更新我的DataSet.xsd文件以匹配新结构? 我必须手动完成吗? 我考虑过删除DataSet并导入一个新的DataSet,但我将丢失所有自定义的Table Adapter查询。

将DB Connection对象传递给方法

想知道是否建议传递数据库连接对象(到其他模块)或让方法(在另一个模块中)负责设置它。 我倾向于让方法设置为不必在使用之前检查连接的状态,只是让调用者将任何所需的数据传递给设置连接所需的调用方法。

与C#数据库交互简介

到目前为止,在我的编程生涯中(两年)我没有太多的数据库经验,但我现在工作的公司广泛使用数据库作为他们的产品,我感觉落后于曲线。 所以我想知道如何最好地开始学习与C#的数据库交互。 我读过LINQ-to-SQL和ADO.net。 这些是正确的技术吗? 我从哪里开始? 编辑:感谢所有的回复。 有很多好的 – 我很难选择一个作为“答案”。 这对我帮助很大!

如何发送电子邮件?

我有这样的数据表。 我有这样的Excel表格。 现在我正在从中读取数据并转换为这样的数据表: id Name MailID Body 123 kirna kiran@example.com happy birthday 234 ram ram@example.com happy birthday 345 anu anitha@example.com how is the day going 357 rashmi rashmi@example.com work need to be completed 现在我发送电子邮件给所有上述人。 任何人都可以帮助我如何从数据表中读取数据并使用指定的正文向他们发送邮件。 任何帮助都会很棒。 谢谢。

如何重用重新打开连接的代码?

我们的生产服务器会终止非活动连接,因此我们的API需要在需要时恢复它们。 以下代码有效,但它非常重复: private const int MaxRetryCount = 3; public static SqlDataReader RestoreConnectionAndExecuteReader(SqlCommand command) { int retryCount = 0; while (retryCount++ < MaxRetryCount) { try { if (command.Connection.State == ConnectionState.Closed) command.Connection.Open(); return command.ExecuteReader(); } catch(Exception e) { if(!e.Message.ToLower().Contains("transport-level error has occurred")) { throw; } } } throw new Exception("Failed to restore connection for command:"+command.CommandText); } public […]

如何递归迭代实体的属性

假设这是我在数据库中的内容 table Ancestor ( idAncestor int not null, name varchar(20) not null, ) table Descendant ( idDescendant int not null, name varchar(20) not null, Ancestor_idAncestor int not null ) 当ADO.NET为上述2个表生成实体对象时,我可以通过Ancestors.First().Descendants访问Ancestors.First().Descendants 。 如果我以递归方式迭代祖先的后代或后代的后代并打印出其id和name ,以下是我的尝试 public void Iterate(Ancestor a) { Type t = a.GetType(); PropertyInfo[] props = t.GetProperties(); foreach(var prop in props){ // pseudo code here if(prop […]