1

我在重點關注數據庫多年後重返編程階段。我曾經是VB6中的一名槍手,但.Net讓我陷入了困境。MVC 3實體數據模型無法獲取外鍵

我試圖從一個已經存在的數據庫在MVC中構建一個Web應用程序。我大致如下:http://msdn.microsoft.com/en-us/data/gg685489.aspx

我使用Visual Web Developer Express 2010 10.0.40219.1 SP1Rel 我不知道如何解決各種模板和插件的版本。

我正在從一個exsting數據庫生成一個實體數據模型。我使用的三張表有定義的主鍵和外鍵,但是當我導入它時,在數據模型中不創建關聯

似乎有很多不同的方法來構建啓用數據庫的Web應用程序。如果我更熟悉我現在可以手動編寫的語法。

Q1:任何想法爲什麼沒有創建關聯?問題2:您是否可以驗證是否需要關聯來告訴代碼生成器如何將所有內容組合在一起? (即在代碼中自動生成適當的方法)。我看不出它會如何工作。

問題3:如果我手動創建關聯並創建關聯,則會出現一些錯誤。看起來創建關聯會創建一個針對該實體的屬性('CustomerCustomer_ID),並且這需要映射到某個東西。但是,當我按'表映射'這不是在列表中映射,我不能添加它。

Error 1 Error 3004: Problem in mapping fragments starting at line 198: 
No mapping  specified for properties Task.CustomerCustomer_ID in Set Tasks. 
An Entity with Key (PK) will not round-trip when: Entity is type [zzzz.Task] 
Error 2 Error 11009: Property 'CustomerCustomer_ID' is not mapped. 

這裏有刪節DDL兩個,我會想到會產生關聯

CREATE TABLE [dbo].[Customers](
    [Customer_ID] [int] IDENTITY(1,1) NOT NULL, 
    [Customer_Name] [varchar](50) NOT NULL, 
........ 
.... 
CONSTRAINT [PK_Customers] PRIMARY KEY CLUSTERED 
([Customer_ID] ASC)) 

CREATE TABLE [dbo].[Tasks](
    [Task_ID] [int] IDENTITY(1,1) NOT NULL, 
    [TaskType_ID] [int] NOT NULL, 
    [Emp_ID] [int] NOT NULL, 
    [Customer_ID] [int] NOT NULL, 
    [Status_ID] [int] NOT NULL, 
    [Task_Desc] [varchar](300) NULL, 
..... 
.. 
CONSTRAINT [PK_Tasks] PRIMARY KEY CLUSTERED 
(
    [Task_ID] ASC 
) 

ALTER TABLE [dbo].[Tasks] WITH CHECK ADD CONSTRAINT [FK_Tasks_Customers] 
FOREIGN KEY([Customer_ID]) 
REFERENCES [dbo].[Customers] ([Customer_ID]) 
GO 
+1

我從樣本MVCMusicStore數據庫中導入,它找到了很好的關聯。有什麼不同?我的行爲不當數據庫的兼容級別爲80(SQL 2000)。我將它更新爲100(SQL 2008),現在正在拾取關聯的_half_。 –

+1

我創建了餘下的丟失協會這樣的: 1.右鍵單擊設計圖面,添加協會 2.定義協會,給它同名的數據庫FK 3。這會將一個屬性添加到實體的底部,從而在驗證時導致錯誤。刪除屬性 4.刪除屬性會導致一個錯誤,可以通過雙擊關聯並將「依賴屬性」更改爲正確的列來解決該錯誤。 爲什麼這是必要的! –

+0

在錯誤消息中,它談到'CustomerCustomer_ID'它來自哪裏?你手動添加了嗎?通常,您不必手動創建關聯。 –

回答

1

正如上面貼的表,這是我的工作解決此問題:

我創建的剩餘的丟失關聯如下:

  1. 右鍵單擊設計圖面,添加關聯
  2. 定義協會,給它一個名稱,樹立正確的基數
  3. 取消勾選「添加外鍵屬性的......」,然後按OK
  4. 點擊的工作服務的相關性,在屬性頁面點擊參考約束屬性並定義它(主體是您的'查找'端)

感謝您試圖幫助每個人,但我懷疑我的問題可能很難重現。

相關問題