2012-09-11 65 views
0

我是MVC的新手。我試圖通過在線教程找到自己的方式。linq mvc外鍵值

正在說,

我有一個表A(A1,A2,A_B1) 和表B(B1,B2)

和A_B1是從B.b1外鍵。

我在Visual Studio中使用其模板生成列表視圖。 我有機會獲得A1和表A的A2領域 <%=Html.Encode(item.a1) %><%=Html.Encode(item.a2) %>

但是當我嘗試訪問A.a_b1值(不是基準表B),我只得到的對象引用從表B. 感謝Kirill 我不知道CodeFirst,ModelFirst或DatabaseFirst是什麼。 我有這些表,並使用visual studio和Linq來生成表A和B的類。 所以A.a1,A.a2顯示在創建的對象中。 和我有A.B和A.BReference在字段

我認爲應該有一種方法來訪問列的值而不是引用。 你能幫我嗎?

我不想執行連接,只需要值。

我盡力確定具體內容,但如果不清楚請告訴我。

感謝

編輯:

我用ADO.Net實體數據模型來生成與我的表關聯的對象。

在我的控制,我有:

A sample1=repository.search(id); 
string s1 = sample1.a1; 
string s2 = sample1.a2; 
string s3 = sample1.a_b1; (ERROR) 

相反,我有

sample1.B (an object of type B) 
and 
sample1.BReference (object of type EntityReference<B>) 
+0

嘗試通過「sample1.a_b1.b1」或「sample1.a_b1.b2」 –

+0

訪問謝謝,當我這樣做時,我在我的視圖中得到一個空指針異常。我想我需要加載a_b1對象,但我不知道如何發送它來查看。 (我在MVC很新) – Athena

+0

初始化控制器中的a_b1對象併發送它以查看,即「sample1.a_b1 = new b();」 –

回答

0

答案爲那些誰遇到了同樣的問題:

我定義了一個新的類A_text具有所有(包括a_b1)

和在選擇,我用:

var result = from pt in db.A 
        where pt.id== id 
        select new A_text 
        { 
         id= pt.id, 
         a1= pt.a1, 
         a2 = pt.a2, 
         a_b1= pt.a_b1.id 
        }; 
     return (result.FirstOrDefault()); 

我不知道的效率相比

db.Search(id); 

但似乎沒那麼遠。