我正在设置一个新的解决方案,以映射从Access数据库导入的SQL数据。自动映射可以很好地与我定义的实体配合使用,但是我需要能够使用Fluent映射类型来访问.NotFound.Ignore扩展名。我在另一个工作正常的项目中使用了完全相同的语法(我认为!)。我是否犯了一个男生错误,导致“不受支持的映射类型'IT.Classes.Entities.Admin'”?任何帮助深表感谢。DDL:CREATE TABLE [dbo].[Admin]( [ID] [int] NOT NULL, [primaryEmail] [nvarchar](50) NULL, [secondaryEmail] [nvarchar](50) NULL, [highPriorityEmail] [nvarchar](50) NULL, [MobileEmail] [nvarchar](50) NULL, [EmailUser] [bit] NOT NULL, [HelpDeskMessage] [nvarchar](max) NULL) ON [PRIMARY]实体:namespace IT.Classes.Entities{ public class Admin { public virtual bool EmailUser { get; set; } public virtual string HelpdeskMessage { get; set; } public virtual string HighPriorityEmail { get; set; } public virtual int Id { get; set; } public virtual string MobileEmail { get; set; } public virtual string PrimaryEmail { get; set; } public virtual string SecondaryEmail { get; set; } }}对应:使用FluentNHibernate.Mapping;使用IT.Classes.Entities;namespace IT.Classes.Mappings{ public sealed class AdminMap : ClassMap<Admin> { public AdminMap() { this.Id(x => x.Id); this.Map(x => x.EmailUser); this.Map(x => x.HelpdeskMessage); this.Map(x => x.HighPriorityEmail); this.Map(x => x.MobileEmail); this.Map(x => x.PrimaryEmail); this.Map(x => x.SecondaryEmail); } }} session 工厂:private static ISessionFactory CreateItHelpdeskSessionFactory(){ return Fluently.Configure().Database( MsSqlConfiguration.MsSql2008.ConnectionString( ConfigurationManager.ConnectionStrings["ITHelpdesk"].ConnectionString)) .Mappings(m => m.FluentMappings.Add<Admin>()) .Mappings(m => m.FluentMappings.Add<Applications>()) .Mappings(m => m.FluentMappings.Add<Category>()) .Mappings(m => m.FluentMappings.Add<Log>()) .Mappings(m => m.FluentMappings.Add<Multipliers>()) .Mappings(m => m.FluentMappings.Add<Os>()) .Mappings(m => m.FluentMappings.Add<Priority>()) .Mappings(m => m.FluentMappings.Add<Request>()) .Mappings(m => m.FluentMappings.Add<Status>()) .BuildSessionFactory();} 编辑我以为可以导出自动映射以查看它们是否会在我的流利映射中突出显示一个问题,但它们似乎是正确的:<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> <class xmlns="urn:nhibernate-mapping-2.2" name="IT.Classes.Entities.Admin, ITClasses, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" table="`Admin`"> <id name="Id" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <column name="Id" /> <generator class="identity" /> </id> <property name="EmailUser" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <column name="EmailUser" /> </property> <property name="HelpdeskMessage" type="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <column name="HelpdeskMessage" /> </property> <property name="HighPriorityEmail" type="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <column name="HighPriorityEmail" /> </property> <property name="MobileEmail" type="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <column name="MobileEmail" /> </property> <property name="PrimaryEmail" type="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <column name="PrimaryEmail" /> </property> <property name="SecondaryEmail" type="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <column name="SecondaryEmail" /> </property> </class></hibernate-mapping> 编辑2 完整的堆栈跟踪。注意潜在原因= 0。FluentNHibernate.Cfg.FluentConfigurationException: An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail. ---> FluentNHibernate.Cfg.FluentConfigurationException: An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail. ---> System.InvalidOperationException: Unsupported mapping type 'IT.Classes.Entities.Admin' at FluentNHibernate.PersistenceModel.Add(Type type) in d:\Builds\FluentNH\src\FluentNHibernate\PersistenceModel.cs:line 152 at FluentNHibernate.Cfg.FluentMappingsContainer.Apply(PersistenceModel model) in d:\Builds\FluentNH\src\FluentNHibernate\Cfg\FluentMappingsContainer.cs:line 127 at FluentNHibernate.Cfg.MappingConfiguration.Apply(Configuration cfg) in d:\Builds\FluentNH\src\FluentNHibernate\Cfg\MappingConfiguration.cs:line 84 at FluentNHibernate.Cfg.FluentConfiguration.BuildConfiguration() in d:\Builds\FluentNH\src\FluentNHibernate\Cfg\FluentConfiguration.cs:line 252 --- End of inner exception stack trace --- at FluentNHibernate.Cfg.FluentConfiguration.BuildConfiguration() in d:\Builds\FluentNH\src\FluentNHibernate\Cfg\FluentConfiguration.cs:line 264 at FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() in d:\Builds\FluentNH\src\FluentNHibernate\Cfg\FluentConfiguration.cs:line 230 --- End of inner exception stack trace --- at FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() in d:\Builds\FluentNH\src\FluentNHibernate\Cfg\FluentConfiguration.cs:line 235 at ConsoleChecker.Program.CreateItHelpdeskSessionFactory() in E:\code\code_testing\2010\ASPHelpdesks\ConsoleChecker\Program.cs:line 48 at ConsoleChecker.Program.GetRequests() in E:\code\code_testing\2010\ASPHelpdesks\ConsoleChecker\Program.cs:line 40 at ConsoleChecker.Program.Main(String[] args) in E:\code\code_testing\2010\ASPHelpdesks\ConsoleChecker\Program.cs:line 24 最佳答案 在您的配置代码中,Fluent映射中提到的类型应该是映射类,而不是要映射的类。也就是说,代替:return Fluently.Configure().Database( MsSqlConfiguration.MsSql2008.ConnectionString( ConfigurationManager.ConnectionStrings["ITHelpdesk"].ConnectionString)) .Mappings(m => m.FluentMappings.Add<Admin>()) .Mappings(m => m.FluentMappings.Add<Applications>()) .Mappings(m => m.FluentMappings.Add<Category>()) .Mappings(m => m.FluentMappings.Add<Log>()) .Mappings(m => m.FluentMappings.Add<Multipliers>()) .Mappings(m => m.FluentMappings.Add<Os>()) .Mappings(m => m.FluentMappings.Add<Priority>()) .Mappings(m => m.FluentMappings.Add<Request>()) .Mappings(m => m.FluentMappings.Add<Status>()) .BuildSessionFactory();您需要说:return Fluently.Configure().Database( MsSqlConfiguration.MsSql2008.ConnectionString( ConfigurationManager.ConnectionStrings["ITHelpdesk"].ConnectionString)) .Mappings(m => m.FluentMappings.Add<AdminMap>()) .Mappings(m => m.FluentMappings.Add<ApplicationsMap>()) .Mappings(m => m.FluentMappings.Add<CategoryMap>()) .Mappings(m => m.FluentMappings.Add<LogMap>()) .Mappings(m => m.FluentMappings.Add<MultipliersMap>()) .Mappings(m => m.FluentMappings.Add<OsMap>()) .Mappings(m => m.FluentMappings.Add<PriorityMap>()) .Mappings(m => m.FluentMappings.Add<RequestMap>()) .Mappings(m => m.FluentMappings.Add<StatusMap>()) .BuildSessionFactory();更好的是,为避免每个类映射都有单独的行,请使用.AddFromAssemblyOf ()方法,该方法使用反射来添加给定程序集中的所有类映射:return Fluently.Configure().Database( MsSqlConfiguration.MsSql2008.ConnectionString( ConfigurationManager.ConnectionStrings["ITHelpdesk"].ConnectionString)) .Mappings(m => m.FluentMappings.AddFromAssemblyOf<AdminMap>()) .BuildSessionFactory();
10-04 14:05