1

有没有在配置时使用 Castle Active Record 为表名添加前缀?

[ActiveRecord("Address")]
public class Address : ActiveRecord<Address> {}

我希望创建/引用的实际表是“PRODAddress”或“DEBUGAddress”。有什么我没有看到的内置的吗?

谢谢,

[编辑] 我在下面标记了一般答案,但这里是为 Castle Active Record 实现表前缀的实际代码:

...
ActiveRecordStarter.ModelsCreated += ActiveRecordStarter_ModelsCreated;
ActiveRecordStarter.Initialize(source, typeof(Address));
...

private static void ActiveRecordStarter_ModelsCreated(ActiveRecordModelCollection models, IConfigurationSource source)
{
    string tablePrefix = ConfigurationManager.AppSettings["TABLE_PREFIX"];
    if (String.IsNullOrEmpty(tablePrefix)) return;

    foreach (ActiveRecordModel model in models)
    {
        model.ActiveRecordAtt.Table = String.Format("{0}{1}", tablePrefix, model.ActiveRecordAtt.Table);
    }
}
4

2 回答 2

1

我认为您必须配置自己的INamingStrategy

于 2009-02-25T23:49:15.010 回答
1

您可以使用ActiveRecordStarter.RegisterExtension(IModelBuilderExtension extension)ActiveRecordStarter.ModelCreated事件

于 2009-02-25T23:58:32.647 回答