母版页属性和性能

时间:2013-07-26 17:13:15

标签: c# asp.net asp.net-membership

我正在使用ASP.NET Membership,我有一个名为UserProfiles的表,与aspnet_Users UserId上的OrganisationID有1:1的关系,可存储大量额外字段。其中一个字段是Session,它将在几乎每个页面上与常规角色一起用于授权目的。

所以我需要经常检查登录用户的OrganisationID。我不想使用public UserProfile loggedInUser { get { if (HttpContext.Current.User.Identity.IsAuthenticated) { if (Membership.GetUser() != null) { Guid userId = (Guid)Membership.GetUser().ProviderUserKey; using (var db = new DatabaseContext()) { return db.UserProfiles.Where(l => l.UserId == userId).FirstOrDefault(); } } } return null; } } ,我宁愿使用Membership cookie并且每次都调用数据库。

在网站的母版页上拥有以下属性会有多大的性能影响:

{{1}}

网站规模不大,流量不会很大。这是一个好的方法吗?

1 个答案:

答案 0 :(得分:0)

你可以使用.Find而不是.Where,一般来说,a better approach when getting a single entity by it's primary key(就像你的例子)。

我怀疑它会有所不同,因为你每次都在创建一个新的上下文。如果是我,我可能会尝试通过依赖注入(使用每个webrequest生命周期或类似)注入DbContext,然后使用Find。这样,如果您多次使用此属性,那么开销就会少得多。

我很好奇,为什么你不想为此使用会话变量?你是否担心过多增加会话的大小?正如您所说,这不是一个庞大的网站,这是一个按用户模型。