2013-05-01 71 views
1

我有VS 2012和現有數據庫(SQL 2012)。EF5不基於現有數據庫正確創建模型

在數據庫中,存在一對一的關係,並且某些列是不可空的,其默認值如「」。 EDM生成了EDMX圖,但所有的關係都是一對多的關係。

CustomerAddressReference1不能爲空和它的默認值是「」。在生成實體類Customer後,我在.edmx設計器中刪除了該屬性,然後編譯該項目。

如果我刪除從設計師「」默認值非空的財產之一,因爲當我編譯了該項目下產生差錯。

錯誤1個錯誤3023:問題在映射片段起始於線 568:列Customer.AddressReference1在表Customer必須是 映射:它沒有缺省值和不可爲空。 C:\用戶\ cliu \文檔\ Visual Studio的 2012 \項目\ FulfillmentService \ ShipmentModel.edmx 569 15 FulfillmentService

如何,如果我想從實體類中刪除某些屬性我解決這個問題?

+0

沒有一些細節很難幫助你。 – Jasen 2013-05-01 22:28:59

+0

在我的數據庫中,我將Customer列的AddressReference1列爲非空,並且其默認值爲「」。在生成實體類Customer後,我在.edmx設計器中刪除了該屬性,然後編譯該項目。我在原始文章中遇到了上述錯誤。該錯誤表示Customer.AddressReference1沒有默認值,但數據庫表定義此列的默認值。 – 2013-05-01 23:33:31

回答

0

如果你想從模型中刪除一些屬性,你應該把它們從你的數據庫中刪除。否則,EF慣例不能正確地完成他們的工作。

通常,當您想要完全控制模型及其映射時,應該使用Code-First方法。

數據庫優先的方法在很大程度上依賴於EF約定,因爲它們的抽象規定了開發者的一些限制 - 約定!

儘管可以通過重寫OnModelCreating事件將db-first方法更改爲code-first並刪除其中一些約定,但是這會造成一些奇怪的問題,這些問題迫使您僅使用雙工來修復它們。 。!

在您當前的情況下,您別無選擇,只能接受一對多關係並保持模型與數據庫同步。