我已經搜索了一個解決方案盡我所能,但它似乎我在一個地方的損失。這是我第一次進入NHibernate的流利NHibernate &。需要幫助w/NFLuent休眠映射
短版本(這將仍然很長)是我有一個數據庫具有表User,Role,UserRoles。它們之間的關係應該相當直觀......用戶可以分配多個角色。 UserRoles表存儲這些關聯,所以用戶&角色不直接鏈接。我想我需要一個多對多的關係,但我不知道如何映射NFLuent。
我已經完成了NFLuent入門頁面的示例並使其工作。我試圖從中猜出答案,但我錯過了某個地方的某些東西。
我會列出我的實體在第二&映射,但我得到的錯誤是:創建一個會話使用
一個無效或不完整的配置。請參閱PotentialReasons集合和InnerException以獲取更多詳細信息。
的潛在原因,收集並沒有說什麼,但說的InnerException:
{「無法確定類型:DataAccess.Entities.User,數據訪問,版本= 1.0.0.0,文化=中性公鑰=空,爲列:NHibernate.Mapping.Column(用戶)「}
HBM的文件 這裏是我的實體:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DataAccess.Entities
{
public class User
{
public virtual int Id { get; private set; }
public virtual string DisplayName { get; set; }
public virtual string Email { get; set; }
public virtual string Password { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DataAccess.Entities
{
public class Role
{
public virtual int Id { get; private set; }
public virtual string RoleName { get; set; }
public virtual string RoleDescription { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DataAccess.Entities
{
public class UserRole
{
public virtual int Id { get; private set; }
public virtual Role Role { get; set; }
public virtual User User { get; set; }
//Attempted variations
//public virtual IList<Role> Roles{ get; set; }
//public virtual IList<User> Users { get; set; }
//public UserRole()
//{
// Roles = new List<Role>();
// Users = new List<User>();
//}
//public virtual void AddRole(Role role)
//{
// Roles.Add(role);
//}
//public virtual void AddUser(User user)
//{
// Users.Add(user);
//}
}
}
這裏是我的映射:
using DataAccess.Entities;
using FluentNHibernate.Mapping;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DataAccess.Mappings
{
public class RoleMap : ClassMap<Role>
{
public RoleMap()
{
Id(x => x.Id);
Map(x => x.RoleDescription);
Map(x => x.RoleName);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DataAccess.Entities;
using FluentNHibernate.Mapping;
namespace DataAccess.Mappings
{
public class UserMap : ClassMap<User>
{
public UserMap()
{
Id(x => x.Id);
Map(x => x.DisplayName);
Map(x => x.Email);
Map(x => x.Password);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DataAccess.Entities;
using FluentNHibernate.Mapping;
namespace DataAccess.Mappings
{
public class UserRoleMap : ClassMap<UserRole>
{
public UserRoleMap()
{
Id(x => x.Id);
Map(x => x.User);
Map(x => x.Role);
//HasMany(x => x.Users)
// .Inverse()
// .Cascade.All();
//HasMany(x => x.Roles)
// .Inverse()
// .Cascade.All();
}
}
}
private static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005
.ConnectionString(c => c
.Server(@".\SQLEXPRESS")
.Database("MyDB")
.TrustedConnection())
)
.Mappings(m => m
.FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly())
.ExportTo(@"C:\Development\MVC\DataAccess\hbms"))
.ExposeConfiguration((Configuration config) => new SchemaExport(config).Create(false, true))
.BuildSessionFactory();
}
任何建議,將不勝感激。謝謝!
我可以在必要時發佈我的HBM文件。 – jason