2009-09-25 2 views
1

yesterday's discussion의 결과로 Castle ActiveRecord를 ORM 작업에 사용하기로 결정했습니다. starting guide에 따라 클래스에 특성을 추가했습니다. 일부 명백한 오류를 수정 한 후, 나는이 자리를 떠날되었다성 ActiveRecord 매핑 문제

이 구성이 설정 제대로

에게되지 않았 음을 표시는 일반적으로 Castle.ActiveRecord.ActiveRecordBase CLASS_XXX 또는 루트 유형에 대한 구성을 찾을 수 없습니다

오류 메시지의 CLASS_XXX는 (는) 내 C# 클래스 이름 중 하나입니다. 흥미로운 점은 코드를 실행할 때마다 CLASS_XXX가 다른 점입니다. 내가 log4net 켜져 있고 내 log.txt 아무것도 캡처 한. 그래서, 프로세스가 NHibernate에 도달하기 전에 발생한 오류를 추측합니다.

다음은 내 CSHARP 코드

 log4net.Config.XmlConfigurator.Configure(); 

     InPlaceConfigurationSource source = 
       new InPlaceConfigurationSource(); 


     Assembly asm = Assembly.Load("DomainModel.Entities"); 

     ActiveRecordStarter.Initialize(asm,source); 
     ActiveRecordStarter.CreateSchema(); 

이 문제의 실제 원인을 찾기위한 어떤 제안입니까?

답변

1

InPlaceConfigurationSource (sample)에 대한 구성이 누락되었거나 을 사용해야합니다.

+0

당신이 제공하는 링크 "이 같은

string connectionString = System.Configuration.ConfigurationManager. ConnectionStrings["Northwind"].ToString(); InPlaceConfigurationSource source = InPlaceConfigurationSource.Build( DatabaseType.MSSQLServer2005, connectionString ); 

또는 뭔가를 :이 같은 뭔가를하거나 필요

InPlaceConfigurationSource source = new InPlaceConfigurationSource(); 

샘플 "실제로 잘못되었습니다. 그것은 예외를 던질 것으로 예상되는 "InvalidRootTypeTestCase"를 가리 킵니다. 그러나이 링크는 나에게 훌륭한 시작점을 제공합니다. - 소스를 테스트합니다. 테스트를 기본 문서로 사용하는 것은 이번이 처음입니다. 모든 소스를 다운로드하고 테스트를 읽었습니다. 실제로 초기화 문제였습니다. 필요한 모든 것은 간단한 var source = ConfigurationManager.GetSection ("activerecord") IConfigurationSource입니다; 그리고 사태가 시작되었습니다. 방향에 감사드립니다. –

+0

링크가 잘못되지 않았습니다 ... 프로그래밍 방식으로 InPlaceConfigurationSource를 구성하는 방법을 보여줍니다. –

1

이 가능성이 올바르지 않습니다 :

string connectionString = 
    System.Configuration.ConfigurationManager. 
     ConnectionStrings["Northwind"].ToString(); 
IDictionary<string, string> properties = 
    new System.Collections.Generic.Dictionary<string, string>(); 
properties.Add("dialect", "NHibernate.Dialect.MsSql2005Dialect"); 
properties.Add("connection.driver_class", "NHibernate.Driver.SqlClientDriver"); 
properties.Add("connection.provider", 
    "NHibernate.Connection.DriverConnectionProvider"); 
properties.Add("connection.connection_string", connectionString); 
properties.Add("proxyfactory.factory_class", 
    "NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle"); 

InPlaceConfigurationSource source = new InPlaceConfigurationSource(); 
source.Add(typeof(ActiveRecordBase), (IDictionary<string, string>)properties); 
+0

요점이 맞습니다. 문제를 일으킨 소스에 대한 초기화입니다. 그러나 Mauricio Scheffer의 링크가 문제를 발견하기위한 올바른 장소로 데려갔습니다. 나는 그의 충고를 답으로 표시해야했다. 그래도 큰 도움을 주셔서 감사합니다. –

관련 문제