2017-08-30 70 views
1

我正在使用Entity Framework 6.0連接到我的C#項目中的MySQL數據庫。我在現有的表格中添加了一個新列,並更新了我的edmx模型。但是,由於某些原因,該列沒有顯示在edmx圖表中,甚至沒有顯示在表格的.cs文件中。實體框架數據庫第一列未在模型中顯示

要調試這個我嘗試以下...

1)刪除整個圖,清理項目,然後更新從數據庫模型,然後重新添加的所有表。

2)刪除整個.edmx文件,清理項目,並重新添加一個新的實體數據模型到我的項目。

3)從一個新鮮的C#項目開始。

4)刪除整個.edmx文件,刪除整個數據庫模式並重新創建它,然後重新添加一個新的實體數據模型。

5)創建具有不同名稱的新數據庫模式並連接到新模式。

但是,所有這些都導致了相同的結果 - 該列沒有顯示在我的edmx文件中。我不明白爲什麼它沒有顯示(特別是因爲我嘗試從一個新的新項目開始......)。我嘗試將列添加到其他表並更新模型,並顯示新列。只是這一張桌子的模型無法正常工作。

這是創建表的SQL腳本。

DROP TABLE IF EXISTS part_revision; 
CREATE TABLE part_revision (
    `id` SMALLINT UNSIGNED NOT NULL UNIQUE AUTO_INCREMENT, 
    `part_id` SMALLINT UNSIGNED NOT NULL, 
    `name` VARCHAR(75) NOT NULL, 
    `actual_gross` SMALLINT UNSIGNED NOT NULL, 
    `upper_specification_limit` DECIMAL(11 , 6) UNSIGNED NOT NULL, 
    `lower_specification_limit` DECIMAL(11 , 6) UNSIGNED NOT NULL, 
    `control_plan_id` SMALLINT UNSIGNED DEFAULT NULL, 
    `quality_plan_id` SMALLINT UNSIGNED DEFAULT NULL, 
    `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP, 
    `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    PRIMARY KEY (`id` , `part_id`), 
    FOREIGN KEY (`part_id`) 
     REFERENCES part (`id`), 
    FOREIGN KEY (`control_plan_id`) 
     REFERENCES control_plan (`id`), 
    FOREIGN KEY (`quality_plan_id`) 
     REFERENCES quality_plan (`id`) 
); 

新列是upper_specification_limit和lower_specification_limit。

以下是從新建項目中生成的生成模型和.cs文件。

Model in .edmx diagram

namespace CBM1_HMI 
{ 
    using System; 
    using System.Collections.Generic; 

    public partial class part_revision 
    { 
     public int id { get; set; } 
     public int part_id { get; set; } 
     public string name { get; set; } 
     public int actual_gross { get; set; } 
     public Nullable<int> control_plan_id { get; set; } 
     public Nullable<int> quality_plan_id { get; set; } 
     public Nullable<System.DateTime> created_at { get; set; } 
     public Nullable<System.DateTime> updated_at { get; set; } 

     public virtual control_plan control_plan { get; set; } 
     public virtual part part { get; set; } 
     public virtual quality_plan quality_plan { get; set; } 
    } 
} 

[更新]我試着重新創建一個不同的名稱數據庫模式。然而,結果是相同的,所以我現在認爲我的數據庫有問題......但我不確定會出現什麼問題,因爲只有這個表有問題。我有另一個具有相同數據類型的列(DECIMAL(11,6)UNSIGNED NOT NULL),它工作正常。我讀過舊版本的實體框架沒有顯示外鍵列。即使這不是固定的,但這是一個正常的列而不是外鍵。

試圖向我的表中添加一個新列並更新模型,新列出現(如下所示),但upper_specification_limit和lower_specification_limit列仍然丟失。我現在更加迷失了。

Added Foo column to table

[UPDATE3]想要刪除的列,更新EDMX模型,然後重新添加的列。同樣的結果。一些原因實體框架只是討厭名稱「upper_specification_limit」和「lower_specification_limit」或東西....

回答

0

解決了我的問題。我錯了另一個表具有完全相同的數據類型...

解決方案是不使用無符號十進制數據類型(至少在MySQL中)。

將我的數據類型從無符號十進制更改爲常規小數,現在該列顯示在我的.edmx文件中。也許在Entity Framework 6中有一個MySQL的無符號十進制數的錯誤?無論如何,很高興解決了我的問題。

[更新]看起來我不是第一個有這個問題的人(Entity framework support for MySql unsigned decimal)。

相關問題