【发布时间】:2010-10-15 03:31:00
【问题描述】:
我正在尝试让 EF4 与 ncommon 1.1 一起使用,它提供了 DDD 模式,例如 UnitOfWork、规范、存储库。
NCommon 配置行抛出以下异常:
发生SynchronizationLockException
对象同步方法是从未同步的代码块中调用的。
实际抛出错误的代码是:
.ConfigureData<EFConfiguration>(config => config.WithObjectContext(() => new CoreContext(connectionString)))
这是我正在运行的代码。
private static void ConfigureIoc()
{
var container = new UnityContainer();
var serviceLocator = new UnityServiceLocator(container);
ServiceLocator.SetLocatorProvider(() => serviceLocator);
container
.RegisterType(typeof(IUnitOfWorkScope), typeof(UnitOfWorkScope), new InjectionConstructor())
.RegisterType(typeof(IList<>), typeof(List<>), new InjectionConstructor())
.RegisterType<IVerticalRepository, EfVerticalRepository>()
;
const string connectionString =
@"metadata=res://*/Core.csdl|res://*/Core.ssdl|res://*/Core.msl;provider=System.Data.SqlClient;provider connection string="";Data Source=devdatabase;Initial Catalog=InfoChoiceAdmin;Persist Security Info=True;User ID=sa;Password=sa;MultipleActiveResultSets=True""";
var adapter = new UnityContainerAdapter(container);
NCommon.Configure.Using(adapter)
.ConfigureState<DefaultStateConfiguration>()
.ConfigureData<EFConfiguration>(config => config.WithObjectContext(() => new CoreContext(connectionString)))
.ConfigureUnitOfWork<DefaultUnitOfWorkConfiguration>(config => config.AutoCompleteScope());
Ioc.Initialize(serviceLocator);
}
【问题讨论】:
-
你在其他电脑上试过了吗?我问是因为上周我在使用 Unity 的项目中遇到了类似的奇怪异常。没有对代码进行任何更改,项目仅在我的计算机上停止工作。我不得不从我的计算机中删除整个解决方案并从 TFS 中删除工作区。然后我创建了新的工作区并下载了解决方案,它工作了。
-
谢谢你的回复,我在另一台电脑上试过了,结果一样。
标签: c#-4.0 entity-framework-4 ddd-repositories ncommon