小编Pau*_*ado的帖子

使用Web API未检查的并发检查

使用EntityFramework v6,我整理了一个原型来演示Web Api和桌面应用程序中的并发检查.

实体:

public static class IRowVersionExtensions
{
    public static string RowVersionAsString(this IRowVersion ivr)
    {
        return Convert.ToBase64String(ivr.RowVersion);
    }

    public static void SetRowVersion(this IRowVersion ivr, string rowVersion)
    {
        ivr.RowVersion = Convert.FromBase64String(rowVersion);
    }
}

public interface IRowVersion
{
    byte[] RowVersion { get; set; }
}

public class Department : IRowVersion
{
    [Key]
    public int Id { get; set; }

    [Required, MaxLength(255)]
    public string Name { get; set; }

    public string Description { get; set; }

    [Timestamp]
    [ConcurrencyCheck]
    public byte[] RowVersion { …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc concurrency entity-framework knockout.js

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

选择不在 ASP.NET Core WebAPI 控制器中等待异步函数运行

场景如下:

  • 后端:Asp.NET Core WebAPI 2.2
  • 前端:使用 API 的 iOS 和 Android

我有一个功能,允许用户向其他用户发送消息。消息的发送是在异步操作中完成的:

public async Task<IActionResult> CreateMessage

此操作按顺序执行以下操作:

  1. 验证
  2. 等待消息持久化到 DB
  3. 通过 SignalR 等待相关客户端的通知
  4. 不等待通过 Azure 通知中心发送推送通知。
  5. 返回 200 OK。

动作的最后两行如下:

_notificationHubProxy.SendNotification(messageToReturnResource.SenderName, messageToPush, recipientId);

return Ok(messageToReturnResource);
Run Code Online (Sandbox Code Playgroud)

SendNotification 是异步的,但我选择不等待它以避免因等待请求完成而导致 UI 锁定。目前这一切似乎都运行良好。

我的问题实际上如下:这是 oky(即不等待),还是这是一个编写错误代码的示例,当我有很多客户端使用该应用程序时会导致问题?

问候

c# asynchronous async-await asp.net-web-api

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

如何取消元组装箱?

我有盒装元组:

(int, string) tuple = (1, "abc");
object box = tuple;
Run Code Online (Sandbox Code Playgroud)

如何从中获取元组box?强制object返回元组的正确语法是什么?

我的尝试:

var deconstruct = (int, string)box;
Run Code Online (Sandbox Code Playgroud)

显然是错误的:

错误CS1525无效的表达式术语'int'

错误CS1525无效的表达式术语“字符串”

错误CS1002; 预期

错误CS0201仅赋值,调用,递增,递减,等待和新对象表达式可以用作语句

c# unboxing tuples c#-7.0

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

C#6 Elvis操作符(空传播)是否短路

为什么这个c#代码会抛出一个null异常?

bool boolResult = SomeClass?.NullableProperty.ItsOkProperty ?? false;
Run Code Online (Sandbox Code Playgroud)

一旦NullableProperty评估为null,elvis运营商是否应该停止评估(短路)?

根据我的理解,上面的代码行是一个快捷方式:

bool boolResult 
if(SomeClass != null)
    if(SomeClass.NullableProperty != null)
        boolResult = SomeClass.NullableProperty.ItsOkProperty;
    else
        boolResult = false;
else
    boolResult = false;
Run Code Online (Sandbox Code Playgroud)

我错了吗?

编辑:现在我明白为什么我弄错了,代码行实际上转换为类似于:

bool boolResult 
if(SomeClass != null)
    boolResult = SomeClass.NullableProperty.ItsOkProperty;
else
    boolResult = false;
Run Code Online (Sandbox Code Playgroud)

因为NullableProperty为空而抛出...

c#-6.0

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

在for循环中创建新线程并传递参数

考虑以下代码:

for(int i = 0; i < 10; i ++)
{
    new Thread(() => Test(i)).Start();
}
Run Code Online (Sandbox Code Playgroud)

Test(int i)函数:

public void Test(int i)
{
    Console.WriteLine("=== Test " + i);
}
Run Code Online (Sandbox Code Playgroud)

实际输出:

===测试3
===测试4
===测试4
===测试5
===测试5
===测试5
===测试9
===测试9
===测试9
===测试10

你可以看到一些数字丢失了,其他一些数据被复制了.

预期产量:

我希望以随机顺序看到所有数字.

我应该锁定任何变量/方法吗?我怎样才能解决这个问题?

c# parallel-processing multithreading

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

如何构建一个在.NET CoreCLR上运行的hello-world控制台应用程序?

我想使用.NET CoreCLR运行一个hello-world控制台应用程序.

到目前为止,我的代码如下.

// Program.cs

using System;

namespace Study
{
    public class Program
    {
        public void Main()
        {
            Console.WriteLine("Hello world!");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

 

// project.json

{
  "frameworks": {
    "dnxcore50": { }
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用命令运行此项目:

dnvm use 1.0.0-beta8 -r coreclr
dnx run
Run Code Online (Sandbox Code Playgroud)

但是,这会产生以下错误:

Microsoft.Dnx.Compilation.CSharp.RoslynCompilationException: warning CS8021: No value for RuntimeMetadataVersion found. No assembly containing System.Object was found nor was a value for RuntimeMetadataVersion specified through options.
(1,11): DNXCore,Version=v5.0 error CS0246: The type or namespace name 'System' could not be found …
Run Code Online (Sandbox Code Playgroud)

.net console-application coreclr

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

安装没有管理员权限的服务

昨天我在 Visual Studio 上使用 WindowsService 项目选项,在尝试安装我的服务时遇到了错误,经过几次尝试后,我终于想到我可能需要管理员权限才能安装服务。当我切换到“以管理员身份运行”时,它确实安装了。但它让我想到的是,其他程序,如 PunkBuster、AMD 驱动程序、Adobe Acrobat 更新服务、Filezilla Server FTP 等等,如何能够通过简单地运行可执行文件而不显示任何内容来安装服务?请求管理员权限的窗口类型?我的意思是,如果我真的想要,我将如何对我创建的应用程序做同样的事情?

.net windows windows-services

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

有没有办法通过配置属性来丰富日志?

我知道我可以通过这种方式添加丰富器:

{
  "Serilog": {
    "Using": [
      "Serilog",
      "Serilog.Enrichers.Environment",
      "Serilog.Enrichers.Process",
      ...
    ],
    "Enrich": [
      "FromLogContext",
      "WithMachineName",
      "WithProcessId"
    ]
...
Run Code Online (Sandbox Code Playgroud)

我可以对房产 ( ApplicationName) 做同样的事情吗?

configuration serilog

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

映射仅在一侧需要导航属性的关系

我有这个型号:

public class Blog
{
    public int ID { get; set; }
    public string Title { get; set; }
}

public class Post
{
    public int ID { get; set; }
    public string Title { get; set; }
    public string Content { get; set; } 
    public int BlogID { get; set; }
    public Blog Blog { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

有这个配置:

public class BlogMap : EntityTypeConfiguration<Blog>
{
    public BlogMap()
    {
        this.ToTable("Blogs", "dbo");
        this.HasKey(t => t.ID);
        this.Property(t => t.ID).HasColumnName("ID");
        this.Property(t => …
Run Code Online (Sandbox Code Playgroud)

entity-framework entity-framework-6

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

C#6方法的空条件运算符失败

以下(C#Interactive)编译但会爆炸.不确定我错过了什么......

class Test { public Func<object> GetSomething = null; }
var t = new Test();
var result = t?.GetSomething();
Run Code Online (Sandbox Code Playgroud)

c# c#-6.0 null-propagation-operator

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

订阅未来的可观察性

我有基于事件的API(Geolocator),我想转换为Rx.

问题是某些操作要求取消订阅所有事件,并且我不想将该burdon传递给Rx API的用户.

因此,用户将订阅一些可观察对象,并且当订阅事件时,它们将被发布到那些可观察对象.

最好的方法是什么?

我想到了创建用户订阅的主题,然后通过另一组可观察对象将事件发布给那些主题.

这是最好的方法吗?如果是这样,怎么样?

reactive-programming system.reactive

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