小编Ner*_*erf的帖子

无法调用公共实例方法AddOrUpdate,mocking

虽然嘲笑我的ApplictionDbContext方法有错误AddOrUpdate.

DbSet 在上下文中是虚拟的.

测试方法:

this.db.ExpensesDocuments.AddOrUpdate(doc);
Run Code Online (Sandbox Code Playgroud)

我的测试方法:

[Fact]
        public void AddOrUpdateExpenses_Success()
        {
            // arrange
            var mockSet = new Mock<DbSet<ExpensesDocument>>();
            var mockContext = new Mock<ApplicationDbContext>();
            mockContext.Setup(m => m.ExpensesDocuments).Returns(mockSet.Object);

            var provider = new ExpensesProvider(mockContext.Object);

            // act
            bool result = provider.AddOrUpdateExpenses(new ExpensesDocument());

            // assert
        }
Run Code Online (Sandbox Code Playgroud)

错误:

结果消息:System.InvalidOperationException:无法在派生的IDbSet类型'Castle.Proxies.DbSet`1Proxy'上调用public,实例方法AddOrUpdate.找不到方法.

我正在使用Moq4框架进行模拟和xUnit测试.

c#

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

四个可以为空的布尔多选复选框.

我有问题.我是一个新的开发者,我对我的产品有"年龄标准".

这些选项是:"<24","24 - 35","35 - 45","> 45".

我需要工作的json看起来:

"age": {
        "lessThan24": true,
        "between24And35": true,
        "between35And45": true,
        "moreThan45": true
        }
Run Code Online (Sandbox Code Playgroud)

我的视图模型:

public class AgeCriterionViewModel
{
    public bool? LessThan24 { get; set; }
    public bool? Between24And35 { get; set; }
    public bool? Between35And45 { get; set; }
    public bool? MoreThan45 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的域名模型:

public class AgeCriterion
{
    public int? From { get; set; }
    public int? To { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

所以这是我的问题.我需要将viewmodel映射到域模型.但是这些布尔值是可以为空的,所以它们可以是空的,虚假的或真实的.OLSO它可以多选.所以这些选项可能是"lessthan24"和"between35and45"或者全部或者没有.

我考虑建立一些可怕的BIG IF构造.但是我如何检查所有选项?有什么好办法吗?

我现在有这个:

       if (age == …
Run Code Online (Sandbox Code Playgroud)

c#

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

带有 ASP.NET MVC 的 C# 中的通知系统/服务

我需要构建通知/警报系统的计划。

我有一个名为“Campaign”的对象,它有“Status”。状态可以是接受、拒绝、补充、工作等。我想在状态更改时发送通知/警报。

在我的门户中发送电子邮件通知和警报。

我不想在我操作 Campaign 的一个控制器中完成所有操作。所以我在考虑委托和活动。但最后我不知道该怎么做。

我在想什么:

领域模型:

class Campaign {
    CampaignStatus Status { get;    set;}
}
abstract class Notification { 
    // properties
}
class EmailNotification {
    // properties specific for email
}
class Alert {
    // properties specific for alerts
}
class CampaignAlert {
    // properties specific for campaign alerts 
}

Services:
INotificationsService {
    Send();
}
IAlertsService : INotificationsService {
    Get(); // I need showing list of alerts too
    GetAll();
    Update(); // for updating info if alert was viewed. …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc events delegates solid-principles

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

FluentValidation 和对象集合其属性应该是唯一的

我有课:

Sponsored { int Order };
Run Code Online (Sandbox Code Playgroud)

我收集了它:

IEnumerable<Sponsored> sponsored; 
Run Code Online (Sandbox Code Playgroud)

我想检查Order这个集合是否是唯一的。

我可以通过 做吗FluentValidation

我有:

SponsoredValidator : AbstractValidator<IEnumerable<Sponsored>>
Run Code Online (Sandbox Code Playgroud)

SponsoredValidator : AbstractValidator<Sponsored>
Run Code Online (Sandbox Code Playgroud)

@Edit:它应该通过 ValidationAttribute 与 WebAPI POST 方法连接

[Validator(typeof(SponsoredValidator))]
Run Code Online (Sandbox Code Playgroud)

c# fluentvalidation

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

计算机上的CSC版本

我通过Visual Studio Code快速更改代码.如你所知它没有内置编译器所以我通过CMD使用CSC.

它只适用于(代码<= C#4.6和代码<= .NET 4.5),因为我的CSC版本.

并且存在问题,因为我在新的C#6.0和.NET 4.6中编写并且无法通过CSC编译.我已经安装了VS 2015与.NET 4.6和compilie通过VS 2015工作良好.

我无法在我的计算机中找到CSC版本.NET 4.6中的CSC.我在Windows注册表中使用.NET 4.6(注册表).

c# version

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

表变量和错误"必须声明标量变量"

我需要为~20行创建临时表或变量.

DECLARE @UserDailyStatsForCategories TABLE (
        CategoryId uniqueidentifier not null,
        [Date] date not null,
        [Unique users] int not null,
        [Returning users] int not null,
        [New users] int not null
    );

insert into @UserDailyStatsForCategories (CategoryId, [Date], [Unique users], [Returning users], [New users])                               
     select 
     @CategoryId,
      eventdate,
      count(*),
      count(case when cnt > 1 then 1 end),
      count(case when cnt = 1 then 1 end)
    from
    (
      select cast(eventtime as date) as eventdate, userid, count(*) as cnt
      from telemetrydata
      where [dbo].[TelemetryData].[DiscountId] = @DiscountId
                and [dbo].[TelemetryData].[EventName] …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

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

SQL求和结果count

我想对计数函数的结果求和。

计数结果如下:

1. 16
2. 32
3. 0
4. 12
Run Code Online (Sandbox Code Playgroud)

我想总结一下。

我试过

select sum(count(...)) ...
Run Code Online (Sandbox Code Playgroud)

它不起作用。还有以下内容:

select sum(du) from (select ... as du ..)
Run Code Online (Sandbox Code Playgroud)

也不工作。

sql

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