2012-09-07 75 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()來解決此問題 –