c# - net - entity framework core vs entity framework
No se pudo cargar el archivo o el ensamblaje Microsoft.Extensions.DependencyInjection.Abstractions, Version=1.1.0.0 (1)
Dado que está utilizando el proyecto en una biblioteca de .net framework, hay un problema con las redirecciones de enlace generadas automáticamente (puede resolverse en la próxima CLI de la base de datos de la versión 15.3 / 2.0 .net). Para cpsroj
, agregue esto en su archivo cpsroj
(preferiblemente antes de cualquier elemento <Import>
para un archivo .targets
si está presente):
<PropertyGroup>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
Esto debería obligar a MSBuild a crear / actualizar un archivo YourProject.dll.config
que contenga los redireccionamientos de enlace necesarios.
Después de actualizar al nuevo paquete Microsoft.EntityFrameworkCore.SqlServer 1.1.2, recibí un error al intentar crear DBContext:
Se produjo la excepción System.IO.FileLoadException HResult = 0x80131040
Mensaje = No se pudo cargar el archivo o el ensamblaje ''Microsoft.Extensions.DependencyInjection.Abstractions, Version = 1.1.0.0, Culture = neutral, PublicKeyToken = adb9793829ddae60'' o una de sus dependencias. La definición del manifiesto del ensamblaje ubicado no coincide con la referencia del ensamblaje. (Excepción de HRESULT: 0x80131040) Fuente = Microsoft.EntityFrameworkCore StackTrace: en Microsoft.EntityFrameworkCore.DbContext..ctor (DbContextOptions options) en las instalaciones de las personas en las que se encuentran las personas. Packages / Services.Infrastructure / Data / SqlServerDbContext.cs: línea 16 en Translations.Api.Data.TranslationsDbContext..ctor (DatabaseOptions databaseOptions) en C: / src / backend / Modules / Translations / Translations.Api / Data / TranslationsDbContext.cs : linea 16
Mi base DbContext
public class SqlServerDbContext : DbContext
{
private readonly DatabaseOptions _databaseOptions;
protected SqlServerDbContext(DatabaseOptions databaseOptions)
{
if (string.IsNullOrEmpty(databaseOptions.ConnectionString))
throw new Exception("Database connection string is missed.");
_databaseOptions = databaseOptions;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(_databaseOptions.ConnectionString);
}
}
Opciones de base de datos que utilizo
public class DatabaseOptions
{
public string ConnectionString { get; set; }
}
Lugar donde creo instancia de contexto.
var dbOptions = new DatabaseOptions { ConnectionString = _connectionString };
DbContext = (TContext) Activator.CreateInstance(typeof(TContext), dbOptions);
// where TContext is derived class from SqlServerDbContext
Todos mis paquetes están actualizados. Visual Studio 2017 15.2 (26430.6). Antes de actualizar a 1.1.2 todo funciona bien. Por favor ayuda a resolver el problema.