小编Sum*_*ngh的帖子

只读表/实体 EF Core 3.0

是否可以在 EF Core 3.0 中创建表/实体?基本上我有我想限制插入/更新/删除命令的历史记录表。

我已经通过更改尝试了 AsNoTracking:

public DbSet<SampleHistory> SampleHistories { get; set; }
Run Code Online (Sandbox Code Playgroud)

到:

public IQueryable<SampleHistory> SampleHistories { get {return Set<SampleHistory>).AsNoTracking<SampleHistory>(); } }
Run Code Online (Sandbox Code Playgroud)

如果我做这样的事情它工作正常(没有保存在数据库中):

var v = DbContext.SampleHistories.FirstOrDefault(e => e.HistoryId == 1);
v.Field1 = $"Test{DateTime.Now.ToLongTimeString()}";
DbContext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

但是如果我在保存之前添加更新语句,我会看到记录在数据库中更新:

var v = DbContext.SampleHistories.FirstOrDefault(e => e.HistoryId == 1);
v.Field1 = $"Test{DateTime.Now.ToLongTimeString()}";
DbContext.Update(v);
DbContext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

我也想避免这种情况。

entity-framework-core ef-core-3.0

5
推荐指数
1
解决办法
95
查看次数

名字的正则表达式

我对正则表达式很陌生,需要满足以下条件的名字的正则表达式:

  1. 名字只能包含字母。它可能包含空格、连字符或撇号。
  2. 它必须以字母开头。
  3. 所有其他字符和数字均无效。
  4. 特殊字符不能在一起(例如不允许使用 John'-s)
  5. 特殊字符前后应出现字母表(例如,不允许使用 John 的)
  6. 不允许有两个连续的空格(例如,不允许使用 Annia St)

任何人都可以帮忙吗?我试过这个,^([a-z]+['-]?[ ]?|[a-z]+['-]?)*?[a-z]$但它没有按预期工作。

c# regex

4
推荐指数
2
解决办法
5717
查看次数

在C#中将语句切换为调用方法的替代方法

我有一个方法,它使用switch语句根据输入参数调用其他方法,如下所示:

    switch (reportName)
            {
                case A:
                    return GenerateReportA(reportName, model, language);
                case B:
                    return GenerateReportB(reportName, model, language);
                case C:
                    return GenerateReportC(reportName, model, language);
                case D:
                    return GenerateReportD(reportName, model, language);
                case E:
                    return GenerateReportE(reportName, model, language);

                and so on...                    
            }
Run Code Online (Sandbox Code Playgroud)

我知道随着越来越多的报告添加到系统中,该switch语句将继续增加。是否有其他方法可以实现这一目标?...代表?... Lambda?我所知道的是,我所有的GenerateReport方法都将具有相同的签名。

c# lambda delegates switch-statement

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

用正则表达式替换为十进制小数货币

我需要将输入货币(不带小数位)的格式设置为标准方式(如$XXX,XXX,XXX,XXX)。用户可以输入以下任何内容:

  1. $123
  2. $123,123
  3. $1,123,123
  4. 123,123
  5. 12,123,123
  6. 12312312
  7. 123
  8. $12123123

我已经写了一篇文章Regex,我可以通过该文章找到所需的模式-> ^\$?[0-9]{1,3}(?:(,[0-9]{3})*|([0-9]{3})*)?$但我不明白如何编写替代代码格式化上述示例以进行$XXX,XXX,XXX,XXX...格式化(因为没有固定的组可以选择)。

c# regex formatting currency

0
推荐指数
1
解决办法
44
查看次数