2010-01-22 81 views
6

我有一個包含員工姓名和員工ID的遺留表。現在員工ID是char,因爲它可以保存以字母開頭的值。員工ID是表格中唯一可用的唯一字段。如何在實體框架中將字符串作爲主鍵!

現在我正在使用一個視圖來捕獲表中的數據(它在一個單獨的數據庫中)。但是由於缺少int主鍵,我的實體框架拒絕識別視圖。

任何解決方案,這將高度讚賞,因爲我不能接觸遺留表。

回答

5

但是我的實體框架由於缺少int主鍵而拒絕識別視圖。

我對此表示懷疑。 EF支持字符串作爲PK。

但是,意見當然不可能有PKs。這意味着在EF中使用它們時你必須做一些額外的工作,特別是如果你讓它們可以更新的話。 Here's how

+2

謝謝克雷格!你的回答幫助我找到了我的答案。 遺留表中的Employee id列的Allow Nulls屬性爲true,因此EF拒絕將其標識爲PK。一旦我刪除它一切正常。 –

1

創建另一列,它是一個int並將其用作主鍵。業務用戶不需要知道該密鑰。

我的猜測是最終應用程序使用包含僱員標識。像第一次和最後一次加上聘用日期一樣,像DB012210。

表如何在內部完成對調用應用程序無關緊要,因此您可以添加另一個字段作爲實數主鍵。然後在當前的EmployeeId上設置一個唯一的約束,但並不真正用它作爲主鍵。

+0

嗨大衛!感謝您的建議。我之前嘗試過,它對我來說非常合適。但正如我在我的問題中提到的那樣,由於大型ERP應用程序正在使用該表,所以不允許對遺留表進行重大更改。 –