Базы не существует, делаю через Code First. Нужно, чтобы бд и все таблицы создавались автоматически по классам моделей.
Подключаю System.Data.SQLite.EF6 через NuGet, прописываю конфиги подключения, создаю модели, контекст, дальше ошибки.
Конфиги (были созданы автоматически, прописал только connectionStrings):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
</DbProviderFactories>
</system.data>
<connectionStrings>
<add name="DbConnection" connectionString="Data Source=C:\test.db;Version=3" providerName="System.Data.SQLite.EF6" />
</connectionStrings>
</configuration>
Контекст:
public class ProjectContext : DbContext
{
public ProjectContext() : base("DbConnection")
{
}
public DbSet<Account> Accounts { get; set; }
}
В результате выкидывает исключение на строчке public ProjectContext() : base("DbConnection")
Необработанное исключение типа "System.InvalidOperationException" в mscorlib.dll
Дополнительные сведения: The Entity Framework provider type 'System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6' registered in the application config file for the ADO.NET provider with invariant name 'System.Data.SQLite.EF6' could not be loaded. Make sure that the assembly-qualified name is used and that the assembly is available to the running application. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.
Подскажите, пожалуйста, где накосячил?
UPD: Добавил System.Data.SQLite с NuGet'a, контекст создается нормально. Однако теперь выдает исключение при попытке добавить объект модели в DbSet контекста:
No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SQLite'.
Нужно же еще с нугет подтянуть библиотечки для работы EF
c SQLite
, конкретно System.Data.SQLite
.
Лично я так делал, немного не по хипстерски, зато работает.
private static SQLiteConnection CreateConnection(string path)
{
var builder = (SQLiteConnectionStringBuilder)SQLiteProviderFactory.Instance.CreateConnectionStringBuilder();
if (builder == null) return null;
builder.DataSource = path;
builder.FailIfMissing = false;
return new SQLiteConnection(builder.ToString());
}
/// <summary>
/// Контекст для создания БД
/// </summary>
private sealed class AppDbContext : DbContext
{
public AppDbContext() : base(CreateConnection(DataBaseConnectionString), false)
{
}
public DbSet<Account> Accounts { get; set; }
public DbSet<Group> Groups { get; set; }
public DbSet<TaskBase> Tasks { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
if (!File.Exists(DataBaseConnectionString))
{
var initializer = new SQLite.CodeFirst.SqliteDropCreateDatabaseAlways<AppDbContext>(modelBuilder);
Database.SetInitializer(initializer);
base.OnModelCreating(modelBuilder);
}
}
В App.config
(или Web.config
в случае ASP
)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
<remove invariant="System.Data.SQLite" /><add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /></DbProviderFactories>
</system.data></configuration>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Написал код для тестирования работы PageMethods в Javascript и C#,но в скрипте не видит PageMethodsЭто скрипт`
В главном окне есть кнопка, при нажатии на которую должен вызваться метод , который есть в UserControl