【发布时间】: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