0

UnitOfWork、Specification、Repository などの DDD パターンを提供する ncommon 1.1 で EF4 を動作させようとしています。

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);
    }
4

1 に答える 1

0

デビッド、

例外の正確なスタック トレースを投稿していただけますか? 私が疑うのは、オブジェクト コンテキストの構築中に何かおかしなことが起こっているということです。

NCommon では、config.WithObjectContext(() => new CoreContext(connectionString)) を呼び出すと、コンテキストのインスタンスを内部的に作成して、MetadataWorkSpace を検査します。再現サンプルも提供していただければ、この問題を追跡するのに役立ちます。

ありがとう。

于 2010-10-18T17:03:11.213 に答える