小编Rob*_*ood的帖子

SQL Server Int或BigInt数据库表ID

我正在编写一个新程序,它需要一个数据库(SQL Server 2008).我现在为系统运行的所有东西都是64位,这让我想到了这个问题.对于各种表中的所有Id列,我应该将它们全部设为INT还是BIGINT?我怀疑该系统是否会超越INT范围,但我认为它可能在一些较大的财务表中.似乎INT是标准虽然......

sql sql-server

51
推荐指数
6
解决办法
4万
查看次数

使用Moq和Unity对Mock存储库对象进行单元测试的正确方法

在我的工作中,我们使用Moq进行模拟,使用Unity作为IOC容器.我对此很新,并且没有很多资源可以帮助我确定我应该使用的最佳实践.

现在,我有一组特定进程需要用来完成其工作的存储库接口(例如:IRepository1,IRepository2 ... IRepository4).

在实际代码中,我可以使用IOC容器并使用RegisterType()方法确定所有IRepository对象.

我试图找出能够测试需要4个提到的存储库的方法的最佳方法.

我想我可以只注册一个Unity IOC容器的新实例,并在每个模拟对象的容器上调用RegisterInstance,为每个模拟对象传递Mock.Object值.我试图使这个注册过程可重用,所以除了单元测试需要从存储库返回一些特定数据之外,我不必一遍又一遍地对每个单元测试做同样的事情.这就是问题所在......在模拟存储库上设置期望值的最佳做法是什么?好像我只是在Unity容器上调用RegisterType,我将失去对实际Mock对象的引用,并且无法覆盖行为.

.net c# moq unity-container

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

如何在SQL Server中为用户定义的表类型添加索引或主键?

我有这个用户定义的类型,我想添加一个主键或索引:

IF NOT EXISTS (
  SELECT * 
  FROM sys.types st 
  JOIN sys.schemas ss 
    ON st.schema_id = ss.schema_id 
  WHERE st.name = N'DistCritGroupData' 
    AND ss.name = N'dbo')
BEGIN

  CREATE TYPE [dbo].[DistCritGroupData] AS TABLE
  (
    [DistCritTypeId] [int] NOT NULL,
    [ItemAction] [int] NOT NULL,        
    [ObjectId] [int] NOT NULL,
    [OperatorType] [int] NOT NULL     
  );

END;
GO  
Run Code Online (Sandbox Code Playgroud)

我基本上想要添加主键或聚簇索引.我试过这个,但是我收到错误'找不到对象"dbo.DistCritGroupData",因为它不存在或者你没有权限.

  CREATE TYPE [dbo].[DistCritGroupData] AS TABLE
  (
    [DistCritTypeId] [int] NOT NULL,
    [ItemAction] [int] NOT NULL,        
    [ObjectId] [int] NOT NULL,
    [OperatorType] [int] NOT NULL,
    CONSTRAINT [DistCritGroupData0] PRIMARY KEY CLUSTERED 
    ( …
Run Code Online (Sandbox Code Playgroud)

sql-server

30
推荐指数
4
解决办法
3万
查看次数

有没有办法在Visual Studio 2012中禁用快速查找?

我刚刚从2010年升级到Visual Studio 2012,并且无法忍受Cntrl + F在编辑器的右上角显示新的"快速查找"对话框这一事实.我通常只是停靠查找和替换窗口,而更喜欢使用它.有没有办法禁用Cntrl + F启动新的快速查找窗口,而是将焦点移动到查找和替换窗口,类似于VS 2010的做法?

visual-studio-2012

26
推荐指数
1
解决办法
3819
查看次数

懒惰<T>重新初始化方法?

有谁知道为什么Microsoft没有在.NET Framework 4.0中的Lazy <T>类中包含Clear()方法或IsDirty属性或类似内容?(以下更新的问题)

我们使用自.NET 3.5以来一直使用的自制类型,其中我使用与Lazy <T>类相同的东西,但允许您让实例重新评估Lazy Func.我们想用新的.NET替换我们的类,但是这个Clear()或IsDirty机制不存在.

让我根据评论重新解释原始问题.有没有办法重新初始化Lazy <T> Func方法而不重新实现该类?如果没有,是否有办法将其作为扩展方法实现,或者只是一个不好的模式首先要遵循?

.net c#-4.0

19
推荐指数
4
解决办法
4642
查看次数

使用跨多个数据上下文的POCO动态代理跟踪Entity Framework 4.0中的更改

我开始搞乱EF 4.0因为我对POCO的可能性感到好奇......我想模拟断开连接的web环境并编写以下代码来模拟这个:

  1. 将测试对象保存在数据库中.
  2. 检索测试对象
  3. 处理与我用于检索它的测试对象相关联的DataContext
  4. 更新测试对象
  5. 创建一个新的数据上下文,并在测试对象上保留更改,这些更改将在针对我的POCO对象生成的DynamicProxy中自动跟踪.

问题是当我在上面的Test方法中调用dataContext.SaveChanges时,不会应用更新.当我检查其EntityStateTracker时,testStore实体显示状态为"已修改",但当我在新的dataContext的Stores属性中查看它时,它不再被修改.我原本以为在new dataContext上调用Attach方法也会使对象的"Modified"状态结束,但事实并非如此.有什么我想念的吗?我肯定使用DynamicProxies进行自我跟踪POCO.

private static void SaveTestStore(string storeName = "TestStore")
{
  using (var context = new DataContext())
  {
    Store newStore = context.Stores.CreateObject();
    newStore.Name = storeName;
    context.Stores.AddObject(newStore);
    context.SaveChanges();
  }
}

private static Store GetStore(string storeName = "TestStore")
{
  using (var context = new DataContext())
  {
    return (from store in context.Stores
            where store.Name == storeName
            select store).SingleOrDefault();
  }
}

[Test]
public void Test_Store_Update_Using_Different_DataContext()
{
  SaveTestStore();
  Store testStore = GetStore();
  testStore.Name = "Updated";      

  using (var dataContext = …
Run Code Online (Sandbox Code Playgroud)

.net-4.0 poco entity-framework-4

11
推荐指数
2
解决办法
8579
查看次数

有没有办法在类上自动覆盖ToString()?

我发现在我编写的许多简单的DTO/POCO类上重写ToString()很有用,当将鼠标悬停在调试器中的实例上时显示一些好的信息.

这是一个例子:

  public class IdValue< T >
  {
    public IdValue( int id, T value )
    {
      Id = id;
      Value = value;
    }

    public int Id { get; private set; }
    public T Value { get; private set; }

    public override string ToString()
    {
      return string.Format( "Id: {0} Value: {1}", Id, Value );
    }
  }
Run Code Online (Sandbox Code Playgroud)

在.NET中有没有办法自动拥有一个ToString()覆盖,列出公共属性或者是否有一个好的约定?

.net c#

10
推荐指数
1
解决办法
2212
查看次数

StreamWriter没有将最后几个字符写入文件

我们遇到了一个服务器的问题,并且它使用了StreamWriter类.有没有人遇到类似下面的问题?如果是这样,解决问题的解决方案是什么?

  using( StreamWriter logWriter = File.CreateText( logFileName ) )
  {
    for (int i = 0; i < 500; i++)
      logWriter.WriteLine( "Process completed successfully." );
  } 
Run Code Online (Sandbox Code Playgroud)

写出文件时,会生成以下输出:

  Process completed successfully.
  ...  (497 more lines)
  Process completed successfully.
  Process completed s
Run Code Online (Sandbox Code Playgroud)

尝试在关闭之前添加logWriter.Flush(),没有任何帮助.我写出的文本行越多,发生的数据丢失就越多.

c# iostream

9
推荐指数
3
解决办法
5798
查看次数

有没有办法通过 appsettings.json 设置 Serilog 格式化程序变量?

我有以下appsettings.json配置:

{
    "Serilog": {
        "Using": [],
        "MinimumLevel": {
            "Default": "Information",
            "Override": {
                "Microsoft": "Warning",
                "System": "Warning"
            }
        },
        "Enrich": [ "FromLogContext", "WithMachineName" ],
        "WriteTo": [
            {
                "Name": "File",
                "Args": {
                    "path": "C:\\Logs\\log.json",
                    "formatter": "Serilog.Formatting.Elasticsearch.ElasticsearchJsonFormatter, Serilog.Formatting.Elasticsearch"
                }
            }
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试在上面的 appsettings.json 文件中配置的内容将在 C# 中表示为如下所示:

Log.Logger = new LoggerConfiguration()
    .ReadFrom.Configuration(configuration)
    .WriteTo.File(new ElasticsearchJsonFormatter(inlineFields:true, renderMessageTemplate: false), @"C:\logs\log.json")
    .CreateLogger();
Run Code Online (Sandbox Code Playgroud)

我需要将“inlineFields”设置为 true,将“renderMessageTemplate”设置为 false,作为 ElasticsearchJsonFormatter 实例上的 appsettings.json 文件中的覆盖。有没有办法在 appsettings.json 文件中执行此操作,以便我可以将配置排除在 C# 之外?

c# appsettings serilog .net-core

7
推荐指数
1
解决办法
6484
查看次数

调试器显示中的Lazy <T>评估."功能评估需要所有线程运行."

我有一个有很多子集合的类,它们都是使用Lazy <T>延迟加载的.调试时,即使没有加载,也可以显示这些子集合吗?或者在调试时强制评估?以下是其中一个儿童系列快速监视的屏幕截图.调试器显示的消息是"函数评估需要所有线程运行.",这对我来说很有意义,我只是希望这些子集合对调试器更友好.

截图

.net c#-4.0

6
推荐指数
1
解决办法
1033
查看次数