1

作为昨天讨论的结果,我决定使用 Castle ActiveRecord 来完成我的 ORM 任务。我已经根据入门指南为类添加了属性。在修复了一些明显的错误后,我收到了这样的问候:

找不到 CLASS_XXX 或其根类型 Castle.ActiveRecord.ActiveRecordBase 的配置,这通常表明配置未正确设置

错误消息中的 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();

有什么建议可以找到这个问题的真正原因吗?

4

2 回答 2

1

要么您缺少InPlaceConfigurationSource( sample ) 的配置,要么您需要使用不同的初始化方法

于 2009-09-25T12:44:02.880 回答
1

这不太可能是正确的:

InPlaceConfigurationSource source = new InPlaceConfigurationSource();

您需要执行以下操作:

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

或者是这样的:

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);
于 2009-09-27T11:22:09.710 回答