小编the*_*000的帖子

使用StackExchange.Redis和ElastiCache

我打算用 ConnectionMultiplexer.Connect("server1:6379,server2:6379") 语法,使用地址:ElastiCache复制组中每个节点的端口号组合(以AWS术语表示).

库是否会处理死/无响应的节点,自动将命令传递给活动节点?
库是否会自动发现失败的节点现在再次可用/添加到复制组的新节点?

redis amazon-elasticache stackexchange.redis

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

如何使用引用 MongoDB 中父类的构造函数映射子项

我目前正在一个项目中使用 MongoDB(带有 csharp 驱动程序),并且我正在尝试解决一些问题。请参阅下面的类结构:

public class A
{
   public IEnumerable<B> Collection {get;}
   public A()
   {
      Collection = new List<B>();
   }
}

public class B
{
   private A _parent;
   public B(A parent)
   {
      _parent=parent;
   }
   public Parent A => _parent;
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试在 Mongo 中配置映射,以便在反序列化子 B 时它将传递 A 的当前反序列化实例。默认情况下,B 的 Parent 属性未序列化。另外,我需要为 B 类创建一个映射器,因为没有默认构造函数,但我不知道如何告诉映射器类将 A 的实例作为 B 的构造函数参数传递。有任何线索吗?

c# mongodb

7
推荐指数
0
解决办法
319
查看次数

实体框架创建审计表/历史表?

我想为特定实体创建历史/审计表.这是一个包含许多子表的复杂实体,我们正在为我们的应用程序使用Repository Patter.我查看了重写DbContext SaveChanges?将这个专门用于一个实体是一种好习惯吗?我还有什么其他选择?

提前致谢.

c# audit entity-framework

5
推荐指数
2
解决办法
2044
查看次数

使用 Stackexchange Redis 时,会创建数千个连接

我们刚刚开始通过 Web 和辅助角色使用 Azure Redis 缓存。我们发现,在相当少量的使用情况下,创建了约 2.5K 个连接。

我们正在使用包装在连接管理器中的 StackExchange.Redis nuget 包

  public class RedisConnManager
{
    private readonly IConfiguration configuration;

    public RedisConnManager(IConfiguration configuration)
    {
        this.configuration = configuration;
    }

    public Lazy<ConnectionMultiplexer> LazyConnection
    {
        get
        {
            return new Lazy<ConnectionMultiplexer>(
                () => ConnectionMultiplexer.Connect(
                    this.configuration.SessionManagerRedisConnectionString));
        }
    }
    public ConnectionMultiplexer Connection => this.LazyConnection.Value;
}
Run Code Online (Sandbox Code Playgroud)

然后使用 Ninject 作为单例将该类注入到需要的依赖类中

           kernel.Bind<RedisConnManager>().To<RedisConnManager>().InSingletonScope();
Run Code Online (Sandbox Code Playgroud)

然后消费如下

 var cache = this.redisConnManager.Connection.GetDatabase();
                key = cachable.GenerateKey();
                RedisValue result = cache.StringGet(key);
Run Code Online (Sandbox Code Playgroud)

我检查过 ConnectionManager 的构造函数不会被多次调用

我们应该看到这么多联系吗?

caching redis lazy-initialization stackexchange.redis

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

如何在 *n* 个测试失败后停止 MsTest 测试执行

我想通过 MS Test(从 Windows 控制台)运行单元测试,只要失败的测试计数超过特定阈值,我就可以停止/终止测试执行。

对于我的用例,当一定比例的测试已经失败时,没有必要继续运行测试。

我只能考虑创建一个新的控制台应用程序来包装 mstest.exe 执行,这样我就可以实时解析标准输出,并最终终止该进程,例如:

var pi = new ProcessStartInfo()
{
    FileName = MS_TEST,
    UseShellExecute = false,
    RedirectStandardOutput = true,
    Arguments = MS_TEST_ARGS
};
int passed = 0; int failed = 0;
using (var process = Process.Start(pi))
{
    while (!process.StandardOutput.EndOfStream)
    {
        string line = process.StandardOutput.ReadLine();
        if (line.Contains("Passed"))
            passed++;
        if (line.Contains("Failed"))
            failed++;
        if (failed >= THRESHOLD)
        {
            process.Kill();
            break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

谁能提出更好的方法来做到这一点?我认为 MsTest 本身并不支持这一点。

PowerShell 似乎是一个选项,但标准输出重定向并不是微不足道的。

更新

请注意,我无法修改测试代码,我需要在不以任何方式修改测试代码的情况下完成此操作。

powershell unit-testing mstest

3
推荐指数
1
解决办法
1792
查看次数

使用 Entity Framework Core 进行审计跟踪

我有一个在 SQL Server 数据库上使用实体框架核心的 ASP.NET 核心 2.0。

我必须跟踪和审计用户对数据所做的所有事情。我的目标是拥有一个自动机制来记录所有正在发生的事情。

例如,如果我有表 Animals,我想要一个并行表“Audit_animals”,您可以在其中找到有关数据、操作类型(添加、删除、编辑)和创建此操作的用户的所有信息。

这次我已经在Django + MySQL中做了,但现在环境不同了。我发现了这一点,看起来很有趣,但我想知道是否有更好的方法,以及哪种方法是在 EF Core 中执行此操作的最佳方法。

更新

我正在尝试这个并且发生了一些事情,但我有一些问题。

我加了这个:

  1. services.AddMvc().AddJsonOptions(options => {
    
                options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
            }); 
    
    Run Code Online (Sandbox Code Playgroud)
  2. public Mydb_Context(DbContextOptions<isMultiPayOnLine_Context> options) : base(options)
    {
        Audit.EntityFramework.Configuration.Setup()
            .ForContext<Mydb_Context>(config => config
                .IncludeEntityObjects()
                .AuditEventType("Mydb_Context:Mydb"))
            .UseOptOut()
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. public MyRepository(Mydb_Context context)
    {
        _context = context;
        _context.AddAuditCustomField("UserName", "pippo");
    
    }
    
    Run Code Online (Sandbox Code Playgroud)

我还创建了一个表来插入审计(只有一个表来测试这个工具),但我唯一得到的是你在图像中看到的。包含我创建的数据的 json 文件列表.... 为什么?

在此处输入图片说明

sql-server audit entity-framework-core asp.net-core audit.net

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