我正在使用.AspNetCore 2.0和EFCore 2.0为自己整理一个新的Web应用程序模板。
在我的测试项目中,我正在进行一些测试,同时创建上下文并添加到DbSets。
这是上下文创建方法。
public static ApplicationDbContext CreateDbContext(string[] args)
{
var basepath = GetBasePath("Application.UI");
var configuration = new ConfigurationBuilder()
.SetBasePath(basepath)
.AddJsonFile("appsettings.json")
.Build();
//Set up configuration sources.
var connectionString = configuration.GetConnectionString("DefaultConnection");
var builder = new DbContextOptionsBuilder<ApplicationDbContext>();
builder.UseSqlServer(connectionString);
return new ApplicationDbContext(builder.Options);
}
以下是错误消息的测试方法。
[TestMethod]
public void AddContact_WithDates_ShouldGetAdded()
{
//Arrange
var ct = new ContactUs
{
ContactWho = ContactWho.Support,
Message = "Please call me about website problems",
Email = "joe@joe.com",
MessageSentTimestamp = DateTime.UtcNow,
FirstName = "Jim",
LastName = "Simons",
ReportingError = false,
MobilePhone = "5555556666"
};
var appArgs = new[] {"TestApp"};
var context = ApplicationDbContextFactory.CreateDbContext(appArgs);
//Act
context.ContactUss.Add(ct);
//Assert
Assert.IsNotNull(context);
}
正确创建上下文。 ContactUs(ContactUss是ContactUs的DbSet)只是一个标准的域类。
但VS2017在Add(ct)调用中在ct下给了我一个红色波浪形,并显示错误消息
参数类型ContactUs不能分配给TEntity类型的参数
这一直是我与EF合作的方式。 Core中有什么新内容我不知道了吗?
答案 0 :(得分:1)
Visual Studio和Resharper都警告我这个错误的解决方案。但单元测试UI中的错误跟踪显示未找到System.Data.SqlClient文件。
我添加了Microsoft.EntityFrameworkCore.SqlServer包,这解决了这个问题。