如何使用 LINQ 从 Asp.Net 配置文件属性进行查询
我有 Asp.net 配置文件属性 Profile.Location、性别等,
我需要获取位置属于“伦敦”且性别 = 男性的所有用户的列表
我如何使用 LINQ 在 Asp.net 配置文件上执行搜索
I have Asp.net profile property Profile.Location, Gender etc
i need to get list of all users whose Location belongs to "London" and Gender = male
how do i perform a search on Asp.net Profile using LINQ
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
事实上,你可以做到。但您需要首先准备好几件事:
下面是我编写的一个 CLR 函数,用于解析 aspnet_Profile 表中的 PropertyNames 和 PropertyValuesString 列值。它返回一个包含属性列和值列的表。
部署该函数,然后为用户的配置文件数据创建视图。下面是一个示例:
瞧,您可以使用 SQL 或您选择的 ORM 查询视图。我在 Linqpad 中写了这个:
Actually, you can do it. But you need to put a couple of things in place first:
Here's a CLR function that I wrote that parses the PropertyNames and PropertyValuesString column values from the aspnet_Profile table. It returns a table with a Property column and a Value column.
Deploy that function and then create a view for your user's profile data. Here's an example:
Voila, you can query the view with SQL or the ORM of your choice. I wrote this one in Linqpad:
不,您不能通过默认的 ASP.NET 配置文件提供程序(它将配置文件数据保存在数据库中的单个字符串字段中)来执行此操作,尽管您仍然可以在另一个数据库表中分离配置文件数据后执行此操作(这是一种常见的方法)以及将您的配置文件数据存储在另一个表中,并通过 User GUID 键将其与默认用户表连接),然后您可以使用 LINQ 查询您的用户配置文件数据。
No, you can't do this through the default ASP.NET profile provider (which saves profile data in a single string field in the database) though you still can do this after separating profile data in another database table (which is a common approach as well to store your profile data in another table and wire it with the default users table via the User GUID key), then you can use LINQ to query your users profiles data.
考虑使用这样的东西:
我可能应该提到我们已经为我们的会员数据库创建了一个 edmx 文件。也就是说,当您有机会时,我会考虑将所有这些有趣的信息移动到应用程序数据库中自己的表中。
consider using something like this:
I should probably mention that we've created an edmx file for our membership database. That said, I'd consider moving all of that interesting information into it's own tables in your application database when you get a chance.