Asp.net mvc 3 使用asp.net MVC在LINQ中连接asp_用户数据库表

Asp.net mvc 3 使用asp.net MVC在LINQ中连接asp_用户数据库表,asp.net-mvc-3,linq,entity-framework,Asp.net Mvc 3,Linq,Entity Framework,我正在使用MVC开发一个示例asp.net项目,但我的数据库是一个实时数据库,我无法对其进行更改(从技术上讲,这是该数据库的测试版本,但我的观点是不可能对数据库进行更改) 我使用asp_Users表中的UserID来存储对系统各个方面进行更改的用户,我希望开始在各个前端表中显示用户名,但是如何链接这些表以获取此用户名 为了澄清,我想对整个系统中的几个表执行此操作,所以我希望可以使用LINQ来执行此操作 我可以通过使用连接查询获得所需的信息,但如何将其传递给视图以供使用 var p

我正在使用MVC开发一个示例asp.net项目,但我的数据库是一个实时数据库,我无法对其进行更改(从技术上讲,这是该数据库的测试版本,但我的观点是不可能对数据库进行更改)

我使用asp_Users表中的UserID来存储对系统各个方面进行更改的用户,我希望开始在各个前端表中显示用户名,但是如何链接这些表以获取此用户名

为了澄清,我想对整个系统中的几个表执行此操作,所以我希望可以使用LINQ来执行此操作

我可以通过使用连接查询获得所需的信息,但如何将其传递给视图以供使用

        var plans = from users in db.aspnet_Users
                           join import in db.Plan_Imports
                           on users.UserId.ToString()
                           equals import.User_ID

                           select new
                           {
                               Date = import.Date,
                               UserName = users.UserName
                           };
样本表

asp\U用户

用户ID

用户名

表1

身份证

字段1

字段2


用户ID我将为每个视图创建一个视图模型

ViewModel只是一个POCO类

public class PlanViewModel
{
  public string UserName { set;get;}
  public DateTime ImportDate { set;get;}
}
然后使用查询中的LINQ投影将数据获取到此ViewModel/ViewModel集合

public ActionResutl Show()
{
   var plans = (from users in db.aspnet_Users
                           join import in db.Plan_Imports
                           on users.UserId.ToString()
                           equals import.User_ID

                           select new PlanViewModel
                           {
                               ImportDate = import.Date,
                               UserName = users.UserName
                           }).ToList();
   return View(plans);    
}
现在,让我们将视图强类型化为
PlanViewModel

@model List<PlanViewModel>
@foreach(var plan in Model)
{
  <p>@plan.UserName</p>
  <p>@plan.ImportDate.ToString()</p>
}
@型号列表
@foreach(模型中的var计划)
{
@plan.UserName

@plan.ImportDate.ToString()

}
Shyju提供的解决方案工作得很好,而且也不太复杂,但是我认为在这种情况下使用LINQ并不合适,因为代码对于一个简单的调用来说已经失控了

我所做的是使用一个存储过程来获取信息,并将其保存到一个复杂的对象中,然后传递给视图

代码现在更整洁,更易于管理,因为上面的代码变得更简单

var plans = db.SP_SelectImports();  

在此处阅读有关存储过程映射的更多信息:

谢谢-它确实工作得很好,但在比较guid和字符串时,toString()方法出现了一个问题。我通过将顶行更改为db.aspnet_Users.AsEnumerable()解决了这个问题