小编Ste*_*ght的帖子

未安装全文搜索,或无法加载全文组件

我目前正在尝试在唯一列上创建全文索引。表定义为:

CREATE TABLE [dbo].[DictionaryWords](
       [Id] [int] IDENTITY(1,1) NOT NULL,
       [Word] [varchar](255) NOT NULL,
       [Frequency] [int] NOT NULL,
CONSTRAINT [PK_DictionaryWords] PRIMARY KEY CLUSTERED 
(
       [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, 
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [UX_Word] UNIQUE NONCLUSTERED 
(
       [Word] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, 
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

然后我创建了全文目录:

CREATE FULLTEXT CATALOG ft AS DEFAULT
Run Code Online (Sandbox Code Playgroud)

最后尝试创建全文索引:

CREATE …
Run Code Online (Sandbox Code Playgroud)

sql-server full-text-search

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

将对象转换为IEnumerable <object>

以下是我遇到的问题的简化版本:

var list = new List<int> {1, 2, 3, 4, 5};
// list Count = 5 System.Collections.Generic.List<int>

var obj = list as object;
// obj  Count = 5   object {System.Collections.Generic.List<int>}

var enumerable = obj as IEnumerable<object>;
// enumerable   null    System.Collections.Generic.IEnumerable<object>
Run Code Online (Sandbox Code Playgroud)

注释是Visual Studio 2017中监视窗口中的值

但是,如果我输入:

obj as IEnumerable<object>
Run Code Online (Sandbox Code Playgroud)

在观察窗口,我得到:

obj as IEnumerable<object>  Count = 5   System.Collections.Generic.IEnumerable<object> {System.Collections.Generic.List<int>}
Run Code Online (Sandbox Code Playgroud)

那么为什么我可以在监视窗口中投射它并且它可以工作,但如果我在代码中执行它,它的计算结果为null?

c# visual-studio-2017

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

使用可选参数模拟异步方法会抛出表达式不是属性访问

我正在使用 Nuget 包 Moq (v4.13.1)

我试图模拟的类/方法具有以下接口:

public interface IAgendaService
{
    Task<IList<IMeeting>> GetRecentMeetingsMostRecentFirstAsync(
        IWho who,
        TimeSpan? timeSpan = null,
        int? maxNumberOfMeetings = null);
}
Run Code Online (Sandbox Code Playgroud)

在我的测试方法中,我有以下代码来定义模拟:

        Mock<IAgendaService> service = new Mock<IAgendaService>(MockBehavior.Strict);

        service.SetupGet(x =>
                x.GetRecentMeetingsMostRecentFirstAsync(
                    It.IsAny<IWho>(),
                    It.IsAny<TimeSpan?>(),
                    It.IsAny<int?>()))
            .Returns(Task.FromResult((IList<IMeeting>)new List<IMeeting>()));
Run Code Online (Sandbox Code Playgroud)

当我运行测试时,service.SetupGet() 抛出以下异常:

测试方法 Agenda.Web.Tests.Controllers.HomeController.IndexTests.TestIndex 引发异常:System.ArgumentException:表达式不是属性访问:x => x.GetRecentMeetingsMostRecentFirstAsync(It.IsAny(), It.IsAny(), It。 IsAny()) 在 Moq.ExpressionExtensions.ToPropertyInfo(LambdaExpression 表达式) 在 Moq.Mock.SetupGet(Mock 模拟,LambdaExpression 表达式,Condition 条件) 在 Moq.Mock 1.SetupGet[TProperty](Expression1 表达式)

我究竟做错了什么?

c# unit-testing moq mocking

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