我是否总是需要在 MVC ASP.NET 用户表上加入
本文关键字:用户 NET ASP MVC 是否 | 更新日期: 2023-09-27 18:35:46
我正在编写我的第一个 ASP.NET MVC应用程序。我正在从一堆表中检索用户数据,我需要确保只返回与当前经过身份验证的用户相关的数据。我发现自己在做很多重复的代码,特别是在我的 LINQ 查询中 - 我总是必须重新连接到 AspNetUser 的 ID 字段,所以我只获取当前经过身份验证的用户拥有的数据。除了每个用户都有自己的表之外,有没有一种好方法,这样我就可以编写 LINQ 查询,而不必添加条件,例如:
(from .... join ....
WHERE db.Users.ID == Customers.AccountOwnerID
select ...)
我的直觉告诉我,一定有更好的方法,但谷歌几乎没有出现。
谢谢托马斯
您可以通过根据需要创建包装类来做到这一点。请参阅斯科特的评论,这可能会回答您。(我无法链接到确切的评论,在页面上搜索关键字"已验证")
http://weblogs.asp.net/scottgu/linq-to-sql-part-8-executing-custom-sql-expressions
您不需要联接表即可具有如此简单的条件。当你加入 LINQ 时,你基本上是在做
选择。。。从表1 T1内部连接表2 T2在 T1 上。用户 ID = t2。用户标识
那么为什么不能只使用您的用户 ID 字段呢?
您可以将 UserID 作为表中的外键,这样就不需要将它们连接在一起。
将代码更改为:
(来自....
其中数据库。用户 ID == 客户帐户所有者 ID
选择...
如果您没有外键,最好拥有它。可以将其添加到数据库中的表中,也可以在"LINQ 数据对象模型"中添加外键
如果使用实体框架生成模型,则有一种更简单的方法。在实体模型中,可以以"关联"的名称在表之间创建关系。然后在代码中,您可以直接访问表,而无需与用户表中的 userID 列建立连接条件。
最终结果 LINQ 将如下所示:
(from Customer.address
select ...)
其中,地址是与客户表有关系的另一个表,其中客户是保存客户表中当前客户数据的对象。