2012-02-20 70 views
1

我正在嘗試爲小項目使用MySql實體框架提供程序。在使用MySql連接器(由MySQL開發,而不是DevArt開發)時,我總是遇到「怪癖」。MySql實體框架數據庫優先 - 主鍵=長?

我發現最近的事情是,從數據庫中生成我的實體越來越long而不是int因爲即使在數據庫中的類型被指定爲有符號整數,自動遞增,PRIMARY KEY其ID字段。我只能想到LAST_INSERT_ID()總是返回long。由於我的實體依靠數據庫來創建標識值,因此插入後MySQL連接器可能會讓Ids long適應ID檢索?

對於我遇到的所有問題,最簡單的解決方法是使用SQL Server。但是,這個應用程序的目標是共享主機。即使您爲SQL Server加載項付費,大多數共享主機也會將SQL Server實例限制爲200MB,並且只允許1或2個數據庫。我認爲這太小了。相同的主機提供幾個免費的1GB MySQL數據庫。如果你長大了,無論如何你可能應該有一個專門的盒子。

回答

1

MySQL將通過返回64位int(或BIGINT)而不是32位int。這就是爲什麼你會得到一個長而不是int。

查看此bugreport:http://bugs.mysql.com/bug.php?id=64084和LAST_INSERT_ID()上的MySQL手冊:http://dev.mysql.com/doc/refman/5.5/en/information-functions.html#function_last-insert-id

+0

:)我的錯誤報告。 – Sam 2012-04-09 15:08:49

+0

我只是感到驚訝,它以這種方式工作。不知何故,MySQL Administrator/Workbench記住我將我的鍵定義爲整數。連接器不能訪問相同的元數據嗎? – Sam 2012-04-09 15:11:11

+1

我和你一樣驚訝。連接器返回與您在數據庫/模型中定義的值不同的值是不合邏輯的。開發連接器的人可能只是選擇了使用單一返回類型。 – WimB 2012-04-10 13:20:25

相關問題