【问题标题】:Custom Id column in the Fluent NH entity nameFluent NH 实体名称中的自定义 ID 列
【发布时间】:2010-01-03 04:59:35
【问题描述】:

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

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

FluentNHibernate.Cfg.FluentConfigurationException : 无效或不完整 创建时使用了配置 一个会话工厂。查看 潜在原因收集,以及 InnerException 了解更多详情。

  • 数据库未配置 通过数据库方法。

FluentNHibernate.Cfg.FluentConfigurationException : 无效或不完整 创建时使用了配置 一个会话工厂。查看 潜在原因收集,以及 InnerException 了解更多详情。

  • 数据库未配置 通过数据库方法。

    ---- NHibernate.MappingException : (XmlDocument)(3,6):XML 验证 错误:元素“类”在 命名空间 'urn:nhibernate-mapping-2.2' 具有无效的子元素“属性” 在命名空间中 'urn:nhibernate-mapping-2.2'。列表 预期的可能元素:'元, 子选择,缓存,同步, 评论,tuplizer,id,composite-id' 在命名空间中 'urn:nhibernate-mapping-2.2'。 ---- System.Xml.Schema.XmlSchemaValidationException :命名空间中的元素“类” 'urn:nhibernate-mapping-2.2' 有 中的无效子元素“属性” 命名空间 'urn:nhibernate-mapping-2.2'。列表 预期的可能元素:'元, 子选择,缓存,同步, 评论,tuplizer,id,composite-id' 在命名空间中 'urn:nhibernate-mapping-2.2'。

如何使用 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");
    }
  }

【问题讨论】:

    标签: nhibernate fluent-nhibernate s#arp-architecture automapping


    【解决方案1】:

    想通了:

    把它当作

    mapping.Id(x => x.Id).Column("user_id");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-19
      相关资源
      最近更新 更多