我在遗留数据库上使用带有 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");
}
}