小编Ran*_*der的帖子

ConcurrentDictionary Object - 通过不同的线程读取和写入

我想在我的应用程序中使用ConcurrentDictionary,但首先我需要确保我正确理解它是如何工作的.在我的应用程序中,我将有一个或多个线程写入或删除字典.而且,我将有一个或多个从字典中读取的线程.潜在地,所有这些都在同一时间.

我是否正确,ConcurrentDictionary的实现负责处理所有必需的锁定,并且我不需要提供自己的锁定?换句话说,如果一个线程正在写入或删除字典,那么读取线程(或另一个写入线程)将被阻止,直到更新或删除完成为止?

非常感谢.

c# multithreading thread-safety

10
推荐指数
2
解决办法
3585
查看次数

C#StreamWriter - 什么时候物理写入文件流?

在我的应用程序中,我使用StreamWriter将数据流式传输到文件.在调用Close()方法之前,是否有任何字节实际写入文件?如果答案是否定的,无论流有多大,这都是正确的吗?

兰迪

c#

9
推荐指数
1
解决办法
3515
查看次数

哪些C#数据类型可以为可空类型?

有人可以给我一个列表,或者指出我可以在哪里找到可以为可空类型的C#数据类型列表?

例如:

  • 我知道Nullable<int>没关系
  • 我知道Nullable<byte[]>不是.

我想知道哪些类型可以为空,哪些不可以.顺便说一下,我知道我可以在运行时测试它.但是,这是我们正在编写的代码生成器,所以我没有实际的类型.我只知道列是stringint32(等).

c# nullable

9
推荐指数
1
解决办法
9468
查看次数

Nullable与非null varchar数据类型 - 查询速度更快?

我们通常更喜欢使用空字符串('')作为默认值使所有varchar/ nvarchar不可为空.团队中有人建议可以为的更好,因为:

像这样的查询:

Select * From MyTable Where MyColumn IS NOT NULL
Run Code Online (Sandbox Code Playgroud)

比这更快:

Select * From MyTable Where MyColumn == ''
Run Code Online (Sandbox Code Playgroud)

任何人都有经验来验证这是否属实?

sql

9
推荐指数
2
解决办法
3223
查看次数

SQL Server 2008 - 捕获所有命中服务器的SQL语句

任何人都可以建议我们在运行Profiler之外捕获发送到SQL Server的所有SQL语句的选项吗?我知道有几种方法可以做到这一点,但我想确保我不会忽略某些东西,例如现有的DM视图等.

非常感谢.

sql-server profiler sql-server-2008 extended-events

9
推荐指数
1
解决办法
1万
查看次数

不受信任的约束

令我惊讶的是,我刚刚得知外键约束可能是不可信的.使用时添加约束时会发生这种情况WITH NOCHECK.当约束不受信任时,查询分析器不会将其用于查询计划生成.

请参阅:https:
//sqlserverfast.com/blog/hugo/2007/03/can-you-trust-your-constraints/

我的问题是这个.当一个约束是不可信的时,我可以检查的约束上有一个属性告诉我这个吗?我想我可以检查是否使用WITH NOCHECK添加约束,但是还有其他方法可以将约束标记为不可信吗?

sql-server data-integrity

9
推荐指数
1
解决办法
261
查看次数

索引搜索与聚簇索引扫描 - 为什么选择扫描?

以下查询在LastModifiedTime列的索引上使用索引搜索.

SELECT 
      CONVERT(varchar, a.ReadTime, 101) as ReadDate,
      a.SubID,
      a.PlantID,
      a.Unit as UnitID,
      a.SubAssembly
FROM dbo.Accepts a WITH (NOLOCK)
WHERE  a.LastModifiedTime BETWEEN '3/3/2010' And '3/4/2010'
AND a.SubAssembly = '400'
Run Code Online (Sandbox Code Playgroud)

下面的查询与上述查询几乎完全相同,使用聚簇索引扫描,而不是LastModifiedTime上的索引.谁能告诉我为什么?而且,更重要的是,我可以做些什么来让SQL Server在LastModifiedTime列上使用索引,而不使用索引提示.

Declare @LastModifiedTimeEnd dateTime
Declare @LastModifiedTimeStart dateTime

    SELECT 
          CONVERT(varchar, a.ReadTime, 101) as ReadDate,
          a.SubID,
          a.PlantID,
          a.Unit as UnitID,
          a.SubAssembly
    FROM dbo.Accepts a WITH (NOLOCK)
    WHERE  a.LastModifiedTime BETWEEN @LastModifiedTimeStart And @LastModifiedTimeEnd
    AND a.SubAssembly = '400'
Run Code Online (Sandbox Code Playgroud)

sql-server

8
推荐指数
2
解决办法
5640
查看次数

Linq错误 - "NotSupportedException:用于查询运算符的不支持的重载'选择'"

我有以下Linq查询:

var tmp = 
    from container in Container
    join containerType in ContainerType on container.ContainerType equals containerType
    where containerType.ContainerTypeID == 2
    select new { ContainerID = container.ContainerID, TypeID = container.ContainerTypeID};

var results = tmp.Select((row, index) => new { row.ContainerID, row.TypeID, ContainerIndex = index })
Run Code Online (Sandbox Code Playgroud)

这样,这很好.如果我添加以下内容,那么我可以在LinqPad中看到结果,我收到此消息标题中描述的错误:

results.Dump();
Run Code Online (Sandbox Code Playgroud)

这个错误不是LinqPad错误,它来自Linq,我不明白这是什么意思.

谢谢.

linq

8
推荐指数
1
解决办法
3560
查看次数

代码分析警告2214 - 如何最好地修复?

我有以下代码:

    public partial class AuditLog : IBusinessEntity
    {
        public BusinessEntityType EntityType { get { return BusinessEntityType.AuditLog; } }

        /// <summary>
        /// Constructor accepting parameter initialization arguments
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="entity"></param>
        /// <param name="command"></param>
        /// <param name="commandText"></param>
        public AuditLog(string userName, BusinessEntityType entity, AuditLogCommand command, string commandText)
        {
            this.Timestamp = DateTime.Now;
            this.UserName = userName;
            this.Entity = entity.ToString();
            this.Command = command.ToString();
            this.CommandText = commandText;
        }
    }
Run Code Online (Sandbox Code Playgroud)

这会生成CA2214警告.的BusinessEntityTypeAuditLogCommand方法参数都是枚举.我不知道这里有什么问题,因此我不确定如何满足警告.

谢谢.

c#

8
推荐指数
1
解决办法
5910
查看次数

实体框架5 - "检测到冲突的变化"

在我们的EF 5应用程序中,当我们在插入或更新时遇到SQL Server死锁错误时,我们会立即再次尝试操作.但是,当我们尝试这样做时,我们会收到以下错误:

"Conflicting changes detected. This may happen when trying to insert multiple entities with the same key."
Run Code Online (Sandbox Code Playgroud)

此错误不是来自SQL Server.这是EF 5错误.我们不会尝试使用相同的密钥插入多个实体.IOW,我们不会尝试插入重复的行.但是,我怀疑这个错误意味着别的东西.但我不完全确定我知道问题是什么.如果我不得不猜测,我会说在第一次尝试时,EF会看到尝试插入实体的位置.它因为死锁而失败.当我们立即再次尝试时,EF认为我们正在尝试使用相同的键再次执行相同的操作,并且不喜欢它.不知道怎么解决这个问题.

entity-framework entity-framework-5

8
推荐指数
1
解决办法
7195
查看次数