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