将userId放回CustomUserAuthRepository.CreateUserAuth中

时间:2014-08-18 20:50:44

标签: c# asp.net-mvc-5 servicestack servicestack-auth

作为ServiceStack的一个非常基本的用户,我试着试一试,但有些事我似乎无法正确理解......

我正在使用此代码,以便在ServiceStack身份验证中使用NHibernate作为数据层:

https://gist.github.com/balexandre/f1217ae8e2a2b1045d47

我已经修改了CreateUserAuth以在我自己的表中创建一个新用户(因为我确实需要为用户提供更多数据并且元数据选项是不够的),我已经扩展到此代码的行201:

https://gist.github.com/balexandre/f1217ae8e2a2b1045d47#file-customuserauthrepository-cs-L201

newUser被发回,我确实需要获取userId(newUser.Id),这样我就可以在我的表中创建一个新用户,其用户ID与UserAuth相同(为了正确保存) /在CustomUserSession.cs中编辑并使用登录信息填充我的用户,如几个示例所示。

如何获得正确的userId?

我真的以为我可以将UserAuth对象附加到我的自定义用户(newLocalUser.UserAuthInfo),但我总是在数据库中找到User.Id == 0

并在newUser.Id电话后获得Session.Save(new UserAuthNHibernate(newUser))也始终为0

你们如何将新生成的UserAuth UserId附加到自己的表中?或者你只是使用电子邮件地址?


原始问题可用Google Groups

1 个答案:

答案 0 :(得分:0)

我没有在CreateUserAuth方法中看到设置newUser.Id属性的任何代码。也许像是......

var newUserAuthNhibernate = new UserAuthNHibernate(newUser);
Session.Save(newUserAuthNhibernate);
newUser.Id = newUserAuthNhibernate.Id; 

需要吗?基于gist中的当前代码,看起来NHibernate会在Session.Save()中创建的UserAuthNHibernate的新实例上设置Id字段,但我看不到那个Id(由DB / NHibernate生成)将基于newUser方法返回的当前CreateUserAuth实例。也许它发生在UserAuthNHibernate类中?