C#/.NET
在 C# 7 中,我们可以使用 if (x is null) return; 代替 if (x == null) return; 与旧方法相比,使用新方法(以前的示例)有什么优势吗? 语义有什么不同吗? 这只是品味问题吗?如果没有,我什么时候应该使用一个? 参考:C# 7.0 的新增功能. 解决方案 更新: Roslyn 编译器已更新,使两个运算符的行为在没有重载
..
注意:这个问题是在引入 C# 6/Visual Studio 2015 中的 .? 运算符. 我们都去过那里,我们有一些像 cake.frosting.berries.loader 这样的深层属性,我们需要检查它是否为空,所以没有例外.做的方法是使用短路if语句 if (cake != null && cake.frosting != null && cake.frosting.berri
..
我总是使用 Nullable 因为我喜欢它的语义.但是,最近我正在研究其他人的现有代码库,他们使用了 Nullable!= null 专门代替. 是否有理由使用一种而不是另一种,还是纯粹是偏好? int?一个;如果(a.HasValue)//... 对比 int?乙;如果 (b != null)//... 解决方案 编译器用对 HasValue 的调用替换了空比较,所以
..
我今天遇到了这个问题,不知道为什么 C# 编译器没有抛出错误. Int32 x = 1;如果(x == 空){Console.WriteLine("这是什么?");} 我很困惑 x 怎么可能为空.特别是因为这个赋值肯定会引发编译器错误: Int32 x = null; x 是否有可能变为空值,是微软决定不把这个检查放入编译器,还是完全错过了? 更新:在弄乱了写这篇文章的代码后,编译器
..
null 和 System.DBNull.Value 之间有什么区别吗?如果是,那是什么? 我现在注意到这种行为 - while (rdr.Read()){if (rdr["Id"] != null)//if (rdr["Id"] != System.DBNull.Value){int x = Convert.ToInt32(rdr["Id"]);}} 虽然我使用 sql 数据读取器从数
..
我也使用多种方法登录到 joomla 管理面板.但返回值与登录页面相同.即使用户名和密码正确. 示例: WebClient Client = new WebClient();System.Collections.Specialized.NameValueCollection 集合 =新 System.Collections.Specialized.NameValueCollection()
..
有没有人发现/使用过类似于 Joomla 的 ASP.NET 应用程序? 我需要在 Windows Server 上设置一个快速而肮脏的 CMS,而我们的客户不希望我们使用 ASP.NET 以外的其他东西. 解决方案 一位朋友告诉我 Umbraco 是您在 CMS 中想要的一切(并且 Nathan 在他的回答中包含在列表中).这个建议来自一个多年来构建了多个 CMS 解决方案的人,在对其
..
我了解 Windows 7 支持事务处理文件.我如何在 C# 中使用它们? 解决方案 通过编写 互操作包装器 围绕非托管函数.我也写了一篇关于它的博客.这是 另一个例子.
..
我正在尝试更新用户. AppUserManager appUserManager = HttpContext.GetOwinContext().GetUserManager();AppUser 成员 = await appUserManager.FindByIdAsync(User.Identity.GetUserId());member.HasScheduledChanges = true;I
..
使用实体框架,我昨晚在我的一个应用程序中收到了许多以下异常: System.Data.EntityException:底层提供程序提交失败.--->System.Data.SqlClient.SqlException:超时已过期.超时时间已过到操作完成或服务器没有响应.在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlExcepti
..
在我的 C# 代码中,我使用的是 TransactionScope,因为我被告知不要依赖我的 sql 程序员将始终使用事务并且我们负责和 yada yada. 说到这里 看起来像TransactionScope对象在SqlTransaction之前回滚了?这可能吗?如果可能,在事务中包装 TransactionScope 的正确方法是什么. 这里是sql测试 CREATE PR
..
假设有人(除了我)编写了以下代码并将其编译为程序集: using (SqlConnection conn = new SqlConnection(connString)){conn.Open();使用 (var 事务 = conn.BeginTransaction()){/* 更新数据库中的内容 *//* 然后调用任何注册的 OnUpdate 处理程序 */InvokeOnUpdate(conn
..
这篇MSDN文章指出: 隔离级别具有连接范围范围,一旦设置为连接使用 SET 事务隔离LEVEL 声明,它仍然有效直到连接关闭或设置了另一个隔离级别.当一个连接关闭并返回池,隔离级别从最后设置事务隔离级别声明被保留.随后的连接重用池连接使用隔离级别这在当时有效连接已池化. SqlConnection 类没有可以持有隔离级别的成员.那么连接如何知道运行在什么隔离级别??? 我问这个
..
我通过 SqlBulkCopy 插入数据,如下所示: public void testBulkInsert(string connection, string table, DataTable dt){使用 (SqlConnection con = new SqlConnection(connection)){con.Open();使用 (SqlBulkCopy bulkCopy = new S
..
我在 C# 中有一个长期运行的 TransactionScope.我告诉示波器它应该有很长的时间跨度,但我仍然超时.什么可能导致这种情况? TransactionOptions transactionOptions = new TransactionOptions();transactionOptions.IsolationLevel = IsolationLevel.ReadCommitted
..
我有一个要求(根据法律)在不同的桌子上有一个无间隙的数字.ID 可以有漏洞,但序列不能. 这是我必须在 C# 代码或数据库(Postgres、MS SQL 和 Oracle)中解决的问题. 这是我的问题: 开始事务1开始事务 2在事务 1 中的表“投资组合"上插入行获取列 Portfolio_Sequence (1) 的下一个数字在事务 1 中的表“文档"上插入行获取列 Docume
..
我使用这样的环境事务: using(TransactionScope tran = new TransactionScope()) {CallAMethod1();//插入CallAMethod2();//插入tran.Complete();} 方法CallAMethod2();返回受影响的行=-264所以它无法插入但是第一个插入已经提交! 我想知道如何使用环境事务,如果第二种方法有多个
..
我有一个数据文件,有时我需要对文件进行更改.更改包括在多个地方更改信息.例如,更改文件末尾附近的一些数据以及更改开头附近的一些信息.我希望两个单独的写入要么都成功,要么都失败,否则它会处于不确定状态并被有效破坏.在 .NET 或一般情况下,是否有针对此方案的任何内置支持? 如果不是那么其他人如何解决这个问题?Windows 上的数据库如何解决这个问题? 更新:我不想使用事务性 NTFS
..
当使用 ado.net 并在单个事务中创建到 MS SQL Server 数据库的多个连接(使用 System.Transactions.TransactionScope)时,System.Transactions 是否将事务从轻量级事务管理器提升到分布式事务协调器(Vista 上的内核事务协调器),即使所有连接对象的连接字符串都相同? 文档在这种特定情况下有些含糊不清.它表示如果在事务期间
..
在什么情况下,包裹在 System.Transactions.TransactionScope 中的代码仍然可以提交,即使抛出了异常并且最外层的作用域从未被调用过? using (var tx = new TransactionScope()) 中有一个顶级方法,它以相同的方式调用也使用 TransactionScope 的方法. 我正在使用带有关联表适配器的类型化数据集.可能是由于某
..