Tôi đang thiết lập một giải pháp mới để ánh xạ với dữ liệu SQL đã được nhập từ cơ sở dữ liệu Access. Ánh xạ tự động hoạt động tốt với các thực thể mà tôi đã xác định nhưng tôi cần có khả năng sử dụng loại ánh xạ Fluent để cấp quyền truy cập vào phần mở rộng .NotFound.Ignore.Thông thạo nHibernate: Loại bản đồ không được hỗ trợ
Tôi đã sử dụng chính xác cú pháp tương tự trong một dự án khác (tôi nghĩ!) Hoạt động tốt. Tôi đã tạo lỗi trường học để gây ra "Loại bản đồ không được hỗ trợ" IT.Classes.Entities.Admin '"phải không? Bất kỳ sự giúp đỡ nào cũng được đánh giá cao.
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]
Entity:
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; }
}
}
Mapping:
sử dụng FluentNHibernate.Mapping; sử dụng 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);
}
}
}
phiên Factory:
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();
}
EDIT
tôi nghĩ rằng tôi sẽ xuất khẩu ánh xạ tự động để xem họ sẽ làm nổi bật một vấn đề trong các ánh xạ thông thạo của tôi, nhưng họ có vẻ là đúng :
<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>
EDIT 2
Theo dõi ngăn xếp đầy đủ. Lưu ý potentialreasons = 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
Tôi đã nghĩ rằng thiếu của khóa chính trên bảng có thể gây ra vấn đề vì vậy tôi đặt cột Id là PK nhưng vẫn là lỗi tương tự. – Rowan
Suy nghĩ thêm - tạo ra một cơ sở dữ liệu trống và sử dụng công cụ tạo lược đồ để cố gắng tự động tạo các bảng và loại trừ bất kỳ vấn đề nào với chính cơ sở dữ liệu đó. Điều này vẫn không thành công với cùng một lỗi. – Rowan
Khi nào thì ngoại lệ xảy ra? Vui lòng đăng ngoại lệ đầy đủ! Exception.ToString() –