Да, это возможно - если вы не используете функции создания или переноса (EF 5.0).
Итак, сначала настройте EF для использования поставщика SQL CE, используя app.config и именованную конфигурацию
<connectionStrings>
<add name="TestDatabase"
providerName="System.Data.SqlServerCe.3.5"
connectionString="Data Source=test.sdf"/>
</connectionStrings>
и
public class TestDbDataContext : DbContext
{
public TestDbDataContext() : base("TestDatabase") { }
}
отключить функцию создания и переноса перед использованием контекста данных
Database.SetInitializer<TestDbDataContext>(null);
Теперь вы можете получить доступ к базе данных. Очевидно, вам придется создавать таблицы вручную.
Оговорка:
Вставка ключей, созданных сервером, не работает с CE 3.5. Таким образом, вам придется управлять ими на стороне клиента (лучше всего использовать GUID для предотвращения конфликтов ключей). Кроме того, даже если вы планируете управлять ключами самостоятельно, вам следует остерегаться. Определение ключа как это
[Key]
Guid Id { get; set; }
заставит EF поверить, что ключ генерируется на стороне сервера. Поэтому вам нужно определить ключевые свойства, используя свободный API EF, чтобы установить для DatabaseGeneratedOption
значение None:
this.Property(p => p.ProductId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None)
.IsRequired();
this.HasKey(p => p.ProductId);
Это можно сделать либо в классе конфигурации (как в примере), либо в функции OnModelCreating
контекста данных.