实体框架核心使用Windows服务 - c#

目前,我正在使用EF Core作为我的数据访问层来构建一个复杂的应用程序,我觉得自己遇到了问题,目前还不确定100%可以使用它。

本质上,我正在将应用程序设计为以下组件

窗户组装
asp.net mvc核心Web应用程序
Windows服务x2
单元测试

在良好的设计中,我会将自己的大部分域放在我的程序集中,以便可以尽可能地重用它,但这是我遇到问题的地方。我目前无法在单元测试应用中使用EF。

我目前正在重写OnConfiguring来设置数据库连接字符串,但是当我尝试在单元测试中使用上下文时,我不断收到以下异常消息:“实例故障”

我的上下文现在很简单,只有一个实体,外观如下:

public partial class CdiContext : DbContext
{
    private string ConnectionString { get; set; }
    private bool IsService { get; set; }
    public CdiContext(string connectionString, bool isService)
    {
        ConnectionString = connectionString;
        IsService = isService;
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(ConnectionString);
    }

    public DbSet<Region> Regions { get; set; }
 }

为了排除单元测试的问题,我还创建了一个简单的控制台应用程序,甚至引发了相同的异常,因此我对如何进行操作一无所知。

 CdiContext context =  new CdiContext(@"Data Source=localhost\\SQLEXPRESS;Initial Catalog=herp-interface;Persist Security Info=True;User ID=sa;Password=herpaderp;Pooling=true", true);
 var regions = context.Regions.ToList();

 Console.ReadLine();

问题是我怎么做是错的,除了ASP.NET Core MVC应用程序之外,我无法在任何类型的项目中使用Windows程序集中的EF上下文?

参考方案

当您从aspnetcore应用程序复制/粘贴连接字符串,并且仍然转义了反斜杠时,将发生此错误“实例故障”。

在ASP.Net Core之外(例如,控制台/ Windows服务等),app.config中的连接字符串无需转义反斜杠。

例如

 <add name="DefaultConnection" connectionString="Server=localhost\\SQLEXPRESS...

而不是

 <add name="DefaultConnection" connectionString="Server=localhost\SQLEXPRESS...

使用Entity Framework Core(2.1)调用标量函数的最佳实践 - c#

我经常需要从Web应用程序(ASP.NET Core / EF Core)中调用在SQL Server上定义的标量函数。由于这些函数只是简单的辅助函数,因此我也使用了许多辅助函数,因此我使用了通用模式来调用这些标量函数-借助EF Core 2.1可用的新查询类型。由于我是EF Core的新手,所以我的问题是这种模式是否会引起问题,并且/或者是否存在调用标量函…

使EF Core 2与仅具有吸气剂的属性一起使用,而没有支持字段 - c#

我的目标是使用以下代码使Entity Framework 2更好地发挥作用:public class Foo { public Guid Id { get; } // This should NOT change public string NotRequiredProperty {get; set;} public Foo(Guid id) => I…

如何在EF Core 2.2中进行原始SQL查询? - c#

我正在使用dotnet core 2.x应用程序。我们有一堆“代码优先”的实体,并且在DBContext中为每个实体都有一个DBSet。例:public class MyContext : DBContext { public MyContext(DBContextOptions<MyContext> options) : base (optio…

如何在命令行上更改连接字符串以在迁移到Entity Framework Core中的新数据库时更新数据库 - c#

首先在ASP.NET Core和EF Core代码中,我有一个多租户的webapp。创建新租户时,我想更改连接字符串,在其上添加迁移,然后更新。从命令行,添加迁移无法在租户上获得动态的连接字符串,因此在应用程序首次以新租户开始时,我没有有效的连接字符串来创建新数据库。有什么解决办法吗?谢谢 参考方案 您在找这个吗?编辑:这是为EF 6.1Update-Dat…

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…