我已经在 MVC 网络配置中创建了一个自定义的 Assession Provider 。 我的 GetUser 函数返回了我从标准 AssistUser 中继承的自定义的员工类别。 这样我就可以为每个用户提供更多细节, 如各种员工细节 。
public override MembershipUser GetUser(string username, bool userIsOnline)
{
return new ModelRepository().GetModels<Employee>().Where(e => e.UserName == username).FirstOrDefault();
}
我面临的问题是,会员提供商产生了我存储器类的新实例(这创造了一个新的 DbContext ), 以检索雇员对象。 这个员工对象随后被传递到任何称为会员的要求/控制者行动。
Employee currentUser = (Employee)Membership.GetUser();
调用请求通常想要在记忆中创建一个新对象, 换句话说是一个新的疾病记录, 并指派先前检索到的用户到该记录中, 然后将它保存到 DB 的“ 坚固” / 坚固” 模式仓库中。 您可能可以看到这种情况的去向, 框架抱怨我试图将一个对象( 用户) 的上下文保存在它最初没有检索的上下文中 。
我目前相当黑客化的解决方案是使用从会员中检索到的用户的 ID。 GetUser 并去从我目前的模型存储库中重新检索雇员对象 。
newSickness.Employee = this.modelRepository.GetModelById<Employee>(this.me.Id.Value);
我试过拆解雇员的物品 但后来它失去了它懒惰的装满财产 我必须记住 试着把它再次附到我目前的仓库/文本上
我也读到过,让贵客户的会员提供商拥有与当前请求使用相同的背景是件好事。 任何如何实现这一点的想法,我如何确保会员提供商使用与用户执行控制器操作时生成的环境相同的背景?