2012-09-07 43 views
0

我上一个例子asp.net项目工作使用MVC,但我的数据库是一个人住一间,我不能更改加盟LINQ asp_Users数据库表(在技术上它是这个测试版数据库,但我的观点是对数据库的更改是不可能的)。使用asp.net MVC

我使用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_Users

用户名

用户名

...

表1

ID

字段1

场2

...

USER_ID < ---裁判asp_Users

表2

ID

字段1

场2

...

USER_ID < ---裁判asp_Users

回答

0

由Shyju提供的解决方案的集合完美地工作,这是不是太复杂的事,但是我决定,我没想到在这种情况下使用LINQ是合适的,因为代码已经失控,应该是一个简单的调用。

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

的代码现在更加简洁和更容易管理,因为上面的代码变成了只是

var plans = db.SP_SelectImports(); 

了解更多关于存储过程映射在这里:http://dotnet.dzone.com/news/mapping-stored-procedure

0

我想创建一个视图模型每个视图。

视图模型只是一个POCO类

public class PlanViewModel 
{ 
    public string UserName { set;get;} 
    public DateTime ImportDate { set;get;} 
} 

然后使用LINQ预测从查询中获取的数据视图模型的视图模型这一/集。

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> 
} 
+0

感谢 - 它没有很好地工作,但有一个问题与toString()方法,因为我比较一个GUID和一个字符串。我通过将顶部行更改为db.aspnet_Users.AsEnumerable()来解决此问题 –