nhibernate를 사용하여 자체 멤버십 공급자를 구축하고 있습니다. MembershipUser 클래스는 기본 속성 및 메서드가 모두 가상이 아니기 때문에 주로 nhibernate 매핑에 구h주게하는 것이 놀랍도록 어려운 것입니다. 내 사용자 클래스는 다음과 같이 정의된다 :Fluent NHibernate가 가상 속성없이 클래스를 매핑합니다.
public class nhMembershipUser : MembershipUser
{
public new virtual Guid ProviderUserKey { get; set; }
public new virtual DateTime LastPasswordChangedDate { get; set; }
public virtual bool IsEnabled { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual string Application { get; set; }
public new virtual string UserName { get; set; }
public new virtual bool IsOnline
{
get
{
var UnitOfWork = new nhUnitOfWork();
return UnitOfWork.UserIsOnline(this);
}
}
public new virtual bool IsLockedOut { get; set; }
public virtual IList<nhRole> Roles { get; set; }
public new virtual bool ChangePassword(string oldPassword, string newPassword)
{
throw new NotSupportedException();
}
public new virtual bool ChangePasswordQuestionAndAnswer(string password, string newPasswordQuestion, string newPasswordAnswer)
{
throw new NotSupportedException();
}
public new virtual string ResetPassword()
{
throw new NotSupportedException();
}
public new virtual string ResetPassword(string passwordAnswer)
{
throw new NotSupportedException();
}
public new virtual string GetPassword()
{
throw new NotSupportedException();
}
public new virtual string GetPassword(string passwordAnswer)
{
throw new NotSupportedException();
}
}
내가 내 매핑을 만들려고 해요 때, 나는이납니다 :
FluentNHibernate.Cfg.FluentConfigurationException: An invalid or incomplete conf
iguration was used while creating a SessionFactory. Check PotentialReasons colle
ction, and InnerException for more detail.
* Database was not configured through Database method.
---> NHibernate.InvalidProxyTypeException: The following types may not be used
as proxies:
nhApplicationServicesProvider.Entities.nhMembershipUser: method Update should be
'public/protected virtual' or 'protected internal virtual'
nhApplicationServicesProvider.Entities.nhMembershipUser: method GetPassword shou
ld be 'public/protected virtual' or 'protected internal virtual'
nhApplicationServicesProvider.Entities.nhMembershipUser: method ChangePassword s
hould be 'public/protected virtual' or 'protected internal virtual'
nhApplicationServicesProvider.Entities.nhMembershipUser: method ResetPassword sh
ould be 'public/protected virtual' or 'protected internal virtual'
nhApplicationServicesProvider.Entities.nhRole: method set_RoleId should be 'publ
ic/protected virtual' or 'protected internal virtual'
nhApplicationServicesProvider.Entities.nhRole: method set_Name should be 'public
/protected virtual' or 'protected internal virtual'
at NHibernate.Cfg.Configuration.ValidateEntities()
at NHibernate.Cfg.Configuration.Validate()
at NHibernate.Cfg.Configuration.BuildSessionFactory()
at FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() in d:\Build
s\FluentNH-v1.x-nh3\src\FluentNHibernate\Cfg\FluentConfiguration.cs:line 227
--- End of inner exception stack trace ---
at FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() in d:\Build
s\FluentNH-v1.x-nh3\src\FluentNHibernate\Cfg\FluentConfiguration.cs:line 232
at nhApplicationServicesProvider.nhSessionFactory.CreateDatabaseSchema() in C
:\Users\JHolovacs\Documents\Projects\nhApplicationServicesProvider\nhApplication
ServicesProvider\nhSessionFactory.cs:line 63
at nhApplicationServicesProvider.Program.Main() in C:\Users\JHolovacs\Documen
ts\Projects\nhApplicationServicesProvider\nhApplicationServicesProvider\Program.
cs:line 13
* Database was not configured through Database method.
그것은 특별히 GETPASSWORD()과 changepassword() 및 ResetPassword 언급을(), 내가 할 수있는 한, 가상 메소드로 기본 클래스를 적절하게 덮어 쓴다.
왜 이러한 오류가 발생하며 어떻게이 문제를 해결할 수 있습니까?
와우 나는 공식적으로 이것으로 내 안락 지대에서 벗어나지 만 올바른 대답 인 것 같습니다. 나는 이것을 밖으로 시도하고 답장 할 것이다. –