C# NHibernate无法确定X的类型
我已经为我的MVC 3 ASP.NET项目使用NHibernate创建了一个自定义成员资格提供程序 我对用户类有一些问题。我得到以下错误: 无法确定以下项的类型: FluentNHibernateMembershipProvider.Models.User, FluentNHibernateMembershipProvider,版本=1.0.0.0,区域性=中性, PublicKeyToken=null,用于以下列:NHibernate.Mapping.Column(用户) 当我调用以下命令时发生错误:C# NHibernate无法确定X的类型,c#,asp.net,nhibernate,fluent-nhibernate,custom-membershipprovider,C#,Asp.net,Nhibernate,Fluent Nhibernate,Custom Membershipprovider,我已经为我的MVC 3 ASP.NET项目使用NHibernate创建了一个自定义成员资格提供程序 我对用户类有一些问题。我得到以下错误: 无法确定以下项的类型: FluentNHibernateMembershipProvider.Models.User, FluentNHibernateMembershipProvider,版本=1.0.0.0,区域性=中性, PublicKeyToken=null,用于以下列:NHibernate.Mapping.Column(用户) 当我调用以下命令时发
_sessionFactory = cfg.BuildSessionFactory();
User.cs文件如下所示:
namespace FluentNHibernateMembershipProvider.Models
{
public class User
{
public virtual int UserId { get; protected set; }
public virtual string Username { get; set; }
public virtual DateTime CreateDate { get; set; }
public virtual string ConfirmationToken { get; set; }
public virtual bool IsConfirmed { get; set; }
public virtual DateTime LastPasswordFailureDate { get; set; }
public virtual int PasswordFailuresSinceLastSuccess { get; set; }
public virtual string Password { get; set; }
public virtual DateTime PasswordChangeDate { get; set; }
public virtual string PasswordSalt { get; set; }
public virtual string PasswordVerificationToken { get; set; }
public virtual DateTime PasswordVerificationTokenExpirationDate { get; set; }
public virtual IList<Role> Roles { get; set; }
public User()
{
Roles = new List<Role>();
}
}
}
namespace FluentNHibernateMembershipProvider.Mappings
{
public class UserMappings : ClassMap<User>
{
public UserMappings()
{
Id(c => c.UserId);
Map(c => c.Username).Unique();
Map(c => c.CreateDate).Nullable();
Map(c => c.ConfirmationToken).Nullable();
Map(c => c.IsConfirmed).Default("0");
Map(c => c.LastPasswordFailureDate).Nullable();
Map(c => c.PasswordFailuresSinceLastSuccess).Default("0");
Map(c => c.Password);
Map(c => c.PasswordChangeDate).Nullable();
Map(c => c.PasswordSalt);
Map(c => c.PasswordVerificationToken);
Map(c => c.PasswordVerificationTokenExpirationDate);
HasManyToMany<Role>(c => c.Roles).Cascade.All().Inverse().Table("UsersInRole");
}
}
}
OAuthTokenMappings.cs:
namespace FluentNHibernateMembershipProvider.Mappings
{
public class RoleMappings : ClassMap<Role>
{
public RoleMappings()
{
Id(c => c.RoleId);
Map(c => c.RoleName);
HasManyToMany<User>(c => c.Users).Cascade.All().Table("UsersInRole");
}
}
}
namespace FluentNHibernateMembershipProvider.Mappings
{
public class OAuthTokenMappings : ClassMap<OAuthToken>
{
public OAuthTokenMappings()
{
CompositeId()
.KeyReference(c => c.Provider, "Provider")
.KeyReference(c => c.ProviderUserId, "ProviderUserId");
Map(c => c.Token);
Map(c => c.User);
Map(c => c.Secret);
}
}
}
public class OAuthTokenMappings : ClassMap<OAuthToken>
{
public OAuthTokenMappings()
{
Id(c => c.Id);
Map(c => c.Provider).UniqueKey("OAuthTokenUniqueKey");
Map(c => c.ProviderUserId).UniqueKey("OAuthTokenUniqueKey");
Map(c => c.Token);
HasOne(c => c.User);
Map(c => c.Secret);
}
}
OAuthTokenMappings.cs:
namespace FluentNHibernateMembershipProvider.Mappings
{
public class RoleMappings : ClassMap<Role>
{
public RoleMappings()
{
Id(c => c.RoleId);
Map(c => c.RoleName);
HasManyToMany<User>(c => c.Users).Cascade.All().Table("UsersInRole");
}
}
}
namespace FluentNHibernateMembershipProvider.Mappings
{
public class OAuthTokenMappings : ClassMap<OAuthToken>
{
public OAuthTokenMappings()
{
CompositeId()
.KeyReference(c => c.Provider, "Provider")
.KeyReference(c => c.ProviderUserId, "ProviderUserId");
Map(c => c.Token);
Map(c => c.User);
Map(c => c.Secret);
}
}
}
public class OAuthTokenMappings : ClassMap<OAuthToken>
{
public OAuthTokenMappings()
{
Id(c => c.Id);
Map(c => c.Provider).UniqueKey("OAuthTokenUniqueKey");
Map(c => c.ProviderUserId).UniqueKey("OAuthTokenUniqueKey");
Map(c => c.Token);
HasOne(c => c.User);
Map(c => c.Secret);
}
}
公共类OAuthTokenMappings:ClassMap
{
公共OAuthTokenMappings()
{
Id(c=>c.Id);
Map(c=>c.Provider).UniqueKey(“OAuthTokenUniqueKey”);
Map(c=>c.ProviderUserId).UniqueKey(“OAuthTokenUniqueKey”);
Map(c=>c.Token);
HasOne(c=>c.User);
Map(c=>c.Secret);
}
}
我认为您的问题来自以下映射:
public OAuthTokenMappings()
{
CompositeId()
.KeyReference(c => c.Provider, "Provider")
.KeyReference(c => c.ProviderUserId, "ProviderUserId");
Map(c => c.Token);
Map(c => c.User); //This is most likely the culprit. Should be a References or HasOne mapping
Map(c => c.Secret);
}
问题可能在另一个引用用户类的映射中。你有这样的地图吗?您可以尝试消除其他映射,然后一次添加一个,以查看哪个映射存在问题。我已经用另外两个类和相应的映射更新了这个问题。