【发布时间】:2014-01-25 13:28:38
【问题描述】:
我正在处理这个错误:
类型的初始化程序发生异常 'System.Data.Entity.Internal.AppConfig'
使用:
- Visual Studio 2013 Ultimate
- 实体框架 5.0
说明:
我有一个控制台应用程序,它从这些层注入一些依赖项:
-域
-DAL
-服务
我使用这些模式:
-工作单元
-存储库
-控制反转
控制台应用程序尝试注入依赖项并查询我的数据库。
这是我在 App.config 中的 connectionString:
<add name="ClockContext" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=Clock.LocalDb;Integrated Security=True"
providerName="System.Data.SqlClient" />
这是我的上下文类:
public class ClockContext : DbContext
{
//ClockContext
public IDbSet<StampUnit> Stamps{ get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
public void Commit()
{
SaveChanges();
}
}
这是程序语法:
internal class Program
{
private static void Main(string[] args)
{
//stamps: A collection that loads data from other source
var kernel = new StandardKernel(new StampsInitializerModule());
var service = kernel.Get<IStampService>();//Here throws the exception
foreach (var stamp in stamps)
{
var stampUnit = new StampUnit
{
ClockId = stamp.ClockId,
WorkerId = stamp.WorkerId,
Start = stamp.Start,
End = stamp.End,
};
service.CreateStamp(stampUnit);//database query
Console.WriteLine(stampUnit);
}
}
}
这是 Ninject 的模块语法:
class StampsInitializerModule : NinjectModule
{
public override void Load()
{
Bind<DbContext>().To<ClockContext>();
//DbFactory DI
Bind<IDbFactory>().To<DbFactory>();
//UnitOfWork DI
Bind<IUnitOfWork>().To<UnitOfWork>();
#region Repositories DI
Bind<IStampRepository>().To<StampRepository>();
#endregion
#region Services DI
Bind<IStampService>().To<StampService>();
#endregion
}
}
【问题讨论】:
-
检查您获得的 TypeInitializationException 的 InnerExceptions,然后提供更多详细信息。这个问题很可能与 Ninject 无关,而是一些错误配置
标签: entity-framework-5 ninject runtime-error console-application