我总是需要在Users表ASP.NET MVC上加入

时间:2016-02-22 05:02:12

标签: c# asp.net asp.net-mvc linq

我正在编写我的第一个ASP.NET MVC应用程序。我正在从一堆表中检索用户数据,我需要确保只返回与当前经过身份验证的用户相关的数据。我发现自己做了很多重复的代码,特别是在我的LINQ查询中 - 我总是要加入AspNetUser的ID字段,所以我只获得当前经过身份验证的用户拥有的数据。没有每个用户拥有自己的表,有一个很好的方法,所以我可以编写LINQ查询而无需添加条件,如:

2

我的直觉告诉我必须有一个更好的方法,但谷歌出现的很少。

由于 托马斯

3 个答案:

答案 0 :(得分:0)

您可以根据需要创建包装类。请参阅斯科特的评论,该评论可能会回答您。 (我无法链接到确切的评论。在页面中搜索关键字'已验证的')

http://weblogs.asp.net/scottgu/linq-to-sql-part-8-executing-custom-sql-expressions

答案 1 :(得分:0)

您不需要加入表格即可拥有如此简单的条件。 当你加入LINQ时,你基本上正在做

选择...... 来自table1 t1 innerjoin table2 t2 在t1.UserID = t2.UserID

那么为什么不能只使用你的UserID字段?

您可以在表格中将UserID作为外键,然后您不需要将它们连接在一起。

将您的代码更改为:

  

(来自....

     

WHERE db.UsersID == Customers.AccountOwnerID

     

选择......)

如果您没有外键,最好拥有它。您可以将它添加到数据库中的表中,也可以在“LINQ数据对象模型”中添加外键

答案 2 :(得分:0)

如果您使用Entity Framework构建模型,那么有一种更简单的方法。在实体模型中,您可以在关联的名称中创建表之间的关系。然后在您的代码中,您可以直接访问表,而无需使用user表中的userID列创建连接条件。

最终结果LINQ将如下所示:

    (from Customer.address 
    select ...)

其中地址是另一个与Customers表关联的表,其中 Customer 是您在Customers表中保存当前客户数据的对象。