EntityFrameworkCore不添加实体

时间:2017-10-26 12:47:39

标签: c# entity-framework asp.net-core

我正在使用.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)只是一个标准的域类。

Context from immediate window

但VS2017在Add(ct)调用中在ct下给了我一个红色波浪形,并显示错误消息

  

参数类型ContactUs不能分配给TEntity类型的参数

这一直是我与EF合作的方式。 Core中有什么新内容我不知道了吗?

1 个答案:

答案 0 :(得分:1)

Visual Studio和Resharper都警告我这个错误的解决方案。但单元测试UI中的错误跟踪显示未找到System.Data.SqlClient文件。

我添加了Microsoft.EntityFrameworkCore.SqlServer包,这解决了这个问题。