2011-10-25 15 views
0

我是帶有實體框架的ASP.NET MVC 3新手,並且已經購買了圍繞此主題的幾本書,已經在很多網站上對此進行了研究。但是,還有一些問題沒有得到解答或不清楚。書中的大部分示例和網站上的教程都不包含端到端場景,它們涵蓋了一種基本方法。ASP.NET MVC和實體框架,模型中的多個表格以及模型類別中的邏輯

以下區域在哪裏,我還不是很清楚:

  1. 當你創建一個數據庫第一種方法,用標準化的架構。這如何轉化爲課程?我採取的步驟是1)創建表格,然後添加一個ADO.NET實體數據模型。從這裏,我選擇從數據庫生成數據模型。目前還沒有問題,所有的表格都是以類的形式生成的。從那裏,我通過右鍵上下文菜單選擇了「添加代碼生成項目」。然後我選擇添加ADO.NET DbContext生成器。這爲我的模型創建類等。從這裏我應該手動編輯類文件以產生1對多關係?

  2. 對於我已經生成的類(請參閱#1),我可以操縱這些以確保可以在屬性設置中添加邏輯(即設置屬性,我使用if語句編寫代碼,如果它如果(myVar!=「」){myChangeVar = currentDate;)

  3. 我可以有多個類與實體框架的表?幾乎創造不同的看法等等

感謝

回答

0

你從來沒有手動修改自動生成的代碼 - 這是與代碼生成器的工作重點。對EDMX所做的任何更改都會刪除生成代碼中的所有更改,因爲生成工具的工作原理很簡單:刪除整個文件內容並創建一個新文件。

如果需要直接生成的類裏任何特殊代碼,您必須

  • 確保它在正確EDMX模型(屬於您的要求爲一對多的關係)。 EDMX是映射功能的關鍵。類只是副產品。
  • 將自定義邏輯生成添加到T4模板。 DbContext生成器是一個生成代碼文件的模板 - 如果您需要生成一些可以推廣的附加代碼,則可以修改模板。

您還可能需要一些特定的代碼,它與某些類或某些屬性相關。在這種情況下:

  • 您可以使用自己的部分類來添加其他方法或屬性。這不允許修改生成的屬性
  • 如果您在映射屬性中需要特定的邏輯,您應該放棄生成器方法並完全由自己編寫類。
0
  1. 您的拉吉斯拉夫說不要手動編輯生成的類。而是編輯EDMX文件。 edmx包含三個獨立的部分。數據庫描述,模型描述以及它們之間的映射。

    但是你特別想創建一個多關係嗎?如果數據庫中有外鍵約束,則EDMX應該已經包含導航屬性。如果不是這種情況,您可以手動在實體之間添加關聯,指定關係的兩端並設置關係的基數。

  2. 如果使用普通的代碼生成器(而不是用於dbContext的代碼生成器),則會看到爲PropertyChanging和PropertyChanged創建了很多「部分方法」。如果你想要做的只是在類中設置另一個值,你可以將這些部分方法添加到你自己的T4模板中,並在另一個代碼文件中實現它們(這在生成代碼時不會被覆蓋)。

  3. 如果您正在討論繼承,則可以將多個類應用於一個數據庫表。通過使用鑑別器列,您可以將多個實體映射到一個表。

+0

嗨,謝謝Wouter。這是有道理的,我也讀過,而不是用自定義代碼修改類,另一種選擇是使用部分類。我在博客回覆帖子中閱讀了這篇文章,這是可能的還是很好的做法?關於多個類,我想要做的是將多個模型傳遞到視圖中。所以我想我會創建一個包裝類,它將生成的類拉到一起。但是,我開始使用Linq,並且我不知道該怎麼聲明擁有模型的變量/屬性。 – user1012500