Используйте Entity Framework 4.1 с SQLITE - PullRequest
4 голосов
/ 23 мая 2011

Возможно ли?У меня есть существующая база данных и созданы классы сущностей:

public class MyContainer : DbContext
{
    public DbSet<Item> Items { get; set; }
    // more tables..
}

Когда я использую эту строку подключения, она терпит неудачу, поскольку у нее нет файлов метаданных:

  <connectionStrings>    
  <add name="MyContainer" 
         connectionString="metadata=.\items.csdl|.\items.ssdl|.\items.msl;provider=System.Data.SQLite;provider connection string=&quot;data source=.\mindstore.sqlite.s3db&quot;" 
         providerName="System.Data.EntityClient"/>
  </connectionStrings>

Но когда яопускайте метаданные из конфига, он жалуется, что вы не можете опускать метаданные из конфига.

Так как можно использовать SQLITE вместе с EF 4.1 без каких-либо файлов конфигурации xml и просто выполнять сопоставление в соответствии сконвенция

1 Ответ

1 голос
/ 23 мая 2011

Если вы хотите сначала использовать код EF без EDMX, вы не можете использовать EntityClient.Используйте общую строку подключения ADO.NET для SQLite:

<connectionStrings>    
    <add name="MyContainer" providerName="System.Data.SQLite"
         connectionString="data source=.\mindstore.sqlite.s3db" />
</connectionStrings>

Редактировать:

Чтобы отключить создание базы данных и проверки базы данных, попробуйте удалить соглашение о метаданных по умолчанию и установить для инициализатора базы данных значение null.

Инициализатор базы данных:

// call this only once in your application bootstrap
Database.SetInitializer<YourContext>(null);

Удаление соглашения:

// Place this to your derived context
protected override void OnModelCreating(ModelBuilder modelBuilder) 
{
    base.OnModelCreationg(modelBuilder);

    modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...