使用引入Compact 4.0的最新EF(6.1.1)和EF for SQL Server Compact(6.1.1)。 Target is Net 4.5.1EF DBConfiguration自动关联到DBContext而不带注释
想要编码我的EF,然后再将它和StructureMap一起打包。创建一个DbConfiguration类:
public class MyConfiguration : DbConfiguration
{
SetDatabaseInitializer<MyContext>(new MyInitializer());
SetProviderServices(SqlCeProviderServices.ProviderInvariantName,
SqlCeProviderServices.Instance);
}
和上下文:
public class MyContext : DbContext
{
public MyContext(String connection) : base(connection) {}
....
}
用的xUnit我运行:
using (var ctx = new MyContext(String.Format("Data Source={0}", Path.Combine(databasePath, databaseName)))) {
ctx.Database.Initialize(true)
}
测试用例成功(通过初始化和种子)创建我的Compact数据库。但是在幕后发生了一些隐含的东西,我不明白。
举例来说,我并不需要对我的MyContext级以下注释:
[DbConfigurationType(typeof(MyConfiguration))]
EF必须足够聪明地看到,我有一个扩展的DbConnection和使用它MyConfiguration类。要么?我也可以一起删除MyConfiguration,测试用例仍然会生成一个数据库(显然不是种子)。怎么样?
我希望能够与代码分配DbConfiguration到特定的DbContext没有通过静态去:
static MyContext()
{
DbConfiguration.set(new MyConfiguration());
}
原因是是还针对不同的“情景模式”与StructureMap。有任何想法吗?
建立一个代码结构,想避免配置文件(如web.config),以便StructureMap可以做我的作文。 – 2014-09-22 12:50:11
@MatthewYoung我更新了答案。 – 2014-09-22 13:10:54
接受了答案。曾见过那个静态的电话。但是如果我们有多个DBContexts会喜欢不同的DBConfiguration对象呢?无法完成? – 2014-09-22 13:21:17