2014-01-22 47 views
2

我正在做關於微軟電影的教程,以學習ASP.NET MVC4。如果可能的話,我想要更多的信息。不同模型從同一個數據庫的不同表中獲取數據ASP.NET MVC 4

我在頁面http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-model

它說,在電影類

public class MovieDBContext : DbContext 
{ 
    public DbSet<Movie> Movies { get; set; } 
} 

添加這個類,然後創建一個新的連接字符串

<add name="MovieDBContext" 
     connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" 
     providerName="System.Data.SqlClient" 
    /> 

這是獲得了電影的信息。

但是我的問題如下。如果我們在數據庫中有兩個表格,一個用於電影,一個用於演員。我們想要得到這兩個表的數據,我們應該創建兩個不同的模型嗎?但是我們只會使用一個數據庫(連接字符串)。那麼,我們如何能夠說演員模型將從演員表中獲取數據,而電影模型是從電影表中獲取數據,但是兩者具有相同的連接字符串?

編輯

假設我已經有兩個數據庫表之前,我創造我的項目。那我怎麼讓我的模特指向他們呢?

回答

4

創建數據庫時,將添加metaData,並且EntityFramework知道每個模型要引用哪個表。連接字符串是相同的,因爲在一個數據庫中有兩個表,連接字符串是數據庫級連接信息,而不是從表數據到模型的轉換。

本質上,代碼的基礎首先是一個模型=一個表。您可以執行外鍵關係等操作,因此如果您的Actor模型引用了Movies,則會創建基礎數據結構以匹配。

編輯:如果你的困惑是圍繞創造的DbContext的方式,你可以創建一個單一的DbContext類既DBSet類型,並只使用一個連接字符串,如:

public class ApplicationDBContext : DbContext 
{ 
    public DbSet<Movie> Movies { get; set; } 
    public DBSet<Actor> Actors { get; set; } 
} 
+0

非常感謝! :)但是,如果表格作者或電影已經存在,並且我們不想在創建新模型時創建新的模型,那我們該怎麼做?我的意思是我們如何讓作者模型從現有作者表中獲取數據? –

+1

我想你是在談論數據庫優先設計,這不是電影教程向你展示的內容,你可以查看這個URL以獲得更多關於使用實體框架的數據庫優先設計的信息:http://msdn.microsoft .com/en-us/data/jj206878.aspx –

+0

非常感謝。我跑了,但它創建了一個模型edmx。我如何使用它?另外,我每次運行我的應用程序時都會收到警告,說現在可能會損壞我的電腦。這是爲什麼? –

1

連接字符串不指向表,它指向數據庫。您創建的模型將與適當的表匹配。如果您使用EF代碼第一種方法,它甚至會創建單獨的表格來匹配您的模型。

更新: 最簡單的例子我可以找到數據庫的第一種方法。 http://weblogs.asp.net/scottgu/archive/2010/08/03/using-ef-code-first-with-an-existing-database.aspx

+0

非常感謝llya。但是,如果表格作者或電影已經存在,並且我們不想在創建新模型時創建新的模型,那麼我們該怎麼做?我的意思是我們如何讓作者模型從現有作者表中獲取數據? –

+0

已更新的答案。 – 2014-01-22 01:23:44

+0

非常感謝。我現在會嘗試 –

1

看起來像一個很好的教程。如果只有多一張桌子才能完成照片。

當您到達下一節時,您會看到作者使用LINQ訪問數據。如果要添加相關表格,則可以添加.Include(「Actors」)語句以獲取附加數據。

SolidFish筆記http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-4 - 這是我開始使用的教程,包含多個表格。

連接字符串是針對數據庫的,所以您只能使用一個。

一旦開始獲取多個模型,您應該開始使用包含模型數據的視圖模型並從中設置視圖。

即一個粗略的例子:

public class MoviesViewModel 
    { 
    // Properties 
    public Movie Movie { get; set; } 
    public IEnumerable<Actors> Actors { get; set; } 

    } 
+0

非常感謝! :)但是,如果表格作者或電影已經存在,並且我們不想在創建新模型時創建新的模型,那我們該怎麼做?我的意思是我們如何讓作者模型從現有作者表中獲取數據? –

+0

謝謝,你剛剛得到我的讚揚 –

相關問題