0

我在遗留数据库上使用带有 Fluent Nhibernate 和 Automapper 的 S#arp 架构。

其中一个表的 id 列与 Automapping 约定不同,因此我试图覆盖它但没有成功。我最终遇到了这个错误

FluentNHibernate.Cfg.FluentConfigurationException :创建 SessionFactory 时使用了无效或不完整的配置。检查 PotentialReasons 集合和 InnerException 了解更多详细信息。

  • 数据库不是通过数据库方法配置的。

FluentNHibernate.Cfg.FluentConfigurationException :创建 SessionFactory 时使用了无效或不完整的配置。检查 PotentialReasons 集合和 InnerException 了解更多详细信息。

  • 数据库不是通过数据库方法配置的。

    ---- NHibernate.MappingException : (XmlDocument)(3,6): XML 验证错误:命名空间“urn:nhibernate-mapping-2.2”中的元素“类”在命名空间“urn:nhibernate”中具有无效的子元素“属性” -映射-2.2'。预期的可能元素列表:命名空间“urn:nhibernate-mapping-2.2”中的“元、子选择、缓存、同步、注释、元组、id、复合id”。---- System.Xml.Schema.XmlSchemaValidationException:命名空间“urn:nhibernate-mapping-2.2”中的元素“class”在命名空间“urn:nhibernate-mapping-2.2”中具有无效的子元素“property”。预期的可能元素列表:命名空间“urn:nhibernate-mapping-2”中的“元、子选择、缓存、同步、注释、元组、id、复合id”。

如何使用 Id 自动映射器约定并通过覆盖功能将我的自定义列设置为 id?

注意:这仅适用于一个实体。我不想更改一般的 id 映射约定
这是我当前的覆盖功能

  public class AuthMap : IAutoMappingOverride<Auth>
  {
    public void Override(AutoMapping<Auth> mapping)
    {
      mapping.Table("x_auth");
      mapping.Map(x => x.Id, "user_id");
      mapping.Map(x => x.SessId, "sess_id");
    }
  }
4

1 回答 1

2

想通了:

用它作为

mapping.Id(x => x.Id).Column("user_id");
于 2010-01-03T05:06:49.907 回答