在带有实体框架的新MVC 3应用中使用ProfileProvider是一个坏主意吗?
|
我一直在尝试向具有实体框架的MVC 3应用程序中添加自定义ProfileProvider类。每次执行以下操作时,我都注意到它调用GetPropertyValues:
profile.FirstName = viewModel.FirstName;
由于某种原因,我看不到更新数据库中的值,这是到目前为止我已经设置的内容。我已经大致遵循了本教程:http://www.davidhayden.com/blog/dave/archive /2007/10/30/CreateCustomProfileProviderASPNET2UsingLINQToSQL.aspx
<profile enabled=\"true\" defaultProvider=\"EfProfileProvider\" inherits=\"Data.BOHProfile\" automaticSaveEnabled=\"true\">
<providers>
<clear />
<add name=\"EfProfileProvider\" type=\"Data.Providers.EfProfileProvider\" connectionStringName=\"BOHEntities\" applicationName=\"BOH\" />
</providers>
</profile>
个人资料类别:
public class BOHProfile : ProfileBase, IBOHProfile
{
public virtual string FirstName
{
get { return base[\"FirstName\"] as string; }
set { base[\"FirstName\"] = value; }
}
public virtual string LastName
{
get { return base[\"LastName\"] as string; }
set { base[\"LastName\"] = value; }
}
public virtual string City
{
get { return base[\"City\"] as string; }
set { base[\"City\"] = value; }
}
public static BOHProfile CurrentUser()
{
return (BOHProfile)(ProfileBase.Create(Membership.GetUser().UserName));
}
public static BOHProfile CurrentUser(string userName)
{
return (BOHProfile)(ProfileBase.Create(userName));
}
}
这是实际提供程序中的代码:
public override SettingsPropertyValueCollection GetPropertyValues(SettingsContext context, SettingsPropertyCollection collection)
{
var uow = new EfUnitOfWork();
var profileRepo = new ProfileRepository(new EfRepository<Profile>(), uow);
var data = profileRepo.FetchProfileData(context[\"UserName\"].ToString(), ApplicationName);
return data != null ? ProviderUtility.ConvertToSettingsPropertyValueCollection(data) : null;
}
public override void SetPropertyValues(SettingsContext context, SettingsPropertyValueCollection collection)
{
var data = ProviderUtility.ConvertFromSettingsPropertyValueCollection(collection);
var uow = new EfUnitOfWork();
var profileRepo = new ProfileRepository(new EfRepository<Profile>(), uow);
profileRepo.SaveProfileData(context[\"UserName\"].ToString(), ApplicationName, data);
profileRepo.Save();
}
也许我不了解概要文件提供程序的意义,但是似乎我可以使一个类获取并设置概要文件表中的数据,或者有什么我看不到的,也许设置此配置文件信息后,在控制器中使用?
没有找到相关结果
已邀请:
1 个回复
伞腹