簡體   English   中英

實體框架數據庫第一列未顯示在模型中

[英]Entity Framework Database First Column not showing in model

我正在使用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文件。

.edmx圖中的模型

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),並且工作正常。 我讀到舊版本的Entity Framework沒有顯示外鍵列。 即使沒有固定,這也是普通列而不是外鍵。

[UPDATE2]嘗試向表中添加新列並更新模型,新列顯示了(如下所示),但是仍然缺少upper_specification_limit和lower_specification_limit列。 我現在更加迷失了。

在表中添加了Foo列

[UPDATE3]嘗試刪除列,更新edmx模型,然后重新添加列。 結果相同。 由於某種原因,實體框架只討厭名稱“ upper_specification_limit”和“ lower_specification_limit”之類的東西。

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

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

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

[更新]看來我不是第一個遇到此問題的人( Entity Framework支持MySql unsigned十進制 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM