是的,有可能 - 如果您不依赖创建或迁移功能 (EF 5.0)。
因此,首先使用 app.config 和命名配置配置 EF 以使用 SQL CE 提供程序
<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 相信密钥是在服务器端生成的。因此,您需要使用 EF 的 fluent API 定义关键属性,将 DatabaseGeneratedOption 设置为 None:
this.Property(p => p.ProductId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None)
.IsRequired();
this.HasKey(p => p.ProductId);
这可以在配置类(如示例中)或数据上下文的OnModelCreating 函数中完成。