Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NHibernate无法确定X的类型_C#_Asp.net_Nhibernate_Fluent Nhibernate_Custom Membershipprovider - Fatal编程技术网

C# NHibernate无法确定X的类型

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(用户) 当我调用以下命令时发

我已经为我的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);
    }

问题可能在另一个引用用户类的映射中。你有这样的地图吗?您可以尝试消除其他映射,然后一次添加一个,以查看哪个映射存在问题。我已经用另外两个类和相应的映射更新了这个问题。