我想为数据库中的每条记录保存创建者的UserID
(我在每个表中都有一个字段),我发现我可以通过覆盖SaveChanges方法来实现。< / p>
唯一的问题是UserID
存储在Web项目的会话变量中,EF存在于单独的项目库中。并且无法从dll访问应用程序。
对我来说,最好的选择是什么?是通过使用UserID参数为SaveChanges创建新的覆盖来传递UserID吗?或任何其他想法?
答案 0 :(得分:0)
我自己是初学者,如果你不喜欢答案,那就很抱歉: - )
据我所知,您正在使用CONTEXT.TABLENAME.ADD方法传递要添加到数据库的值。
你说你在每个表中都有userid的字段,然后它只是从session变量获取用户id并在传递剩余数据时传递它。
如果您提供更多信息,将会有所帮助。
答案 1 :(得分:0)
传递它绝对是最好的方法,因为如果您尝试将Web上下文紧密绑定到单独的库中的数据上下文,您将发现自己被束缚。它也不是一个很好的“关注点”,所以如果您将数据库用于除您网站以外的任何其他内容,它将无效。
如果您需要/坚持访问主项目之外的会话,您可以使用:
HttpContext.Current...
并添加对System.Web的引用。在这种情况下,这不是最好的做法,但它是可能的。