[英]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文件。
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列。 我現在更加迷失了。
[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.