[英]Entity Framework - MySQL - Unknown Exception
我有一個問題,我不確定是什么原因造成的。 我有一個代碼優先的實體框架數據庫,在第一次運行時一切正常。 數據庫被創建並且沒有拋出異常。
在第二次運行時,當實體框架啟動並且我第一次嘗試調用“保存”function 時,它會引發此異常:(我的表中沒有一個名為 CreatedOn 的列)
MySql.Data.MySqlClient.MySqlException: 'Unknown column 'CreatedOn' in 'field list''
這是我的 class
[DbConfigurationType(typeof(MySqlEFConfiguration))]
public partial class MyContext : DbContext
{
public MyContext()
: base("name=MyContext")
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration>());
if (Database.Exists())
{
if (!Database.CompatibleWithModel(false))
{
Database.Initialize(true);
}
}
}
...Defining DbSets
我也在使用遷移。
我最初在啟動時也遇到了這個異常,但是我刪除了一些我在啟動時添加到數據庫中的代碼。 我認為連接尚未准備好。我假設它與連接未完全建立有關,但我不知道如何在離開我的 UnitOfWork class 之前正確確保我們已連接。 所以我有這個 class 將我的所有數據庫表連接到我的上下文:
public UnitOfWork(MyContext contextMain)
{
_context = contextMain;
_context.Database.CommandTimeout = 600;
PartFamilies = new PartFamilyRepository(_context);
PartNumbers = new PartNumberRepository(_context);
Measurements = new MeasurementRepository(_context);
Attributes = new AttributeRepository(_context);
ProgramNumbers = new ProgramNumberRepository(_context);
FamilyBiases = new FamilyBiasRepository(_context);
BagQuantities = new BagQuantityRepository(_context);
UndetectableMods = new UndetectableRepository(_context);
OverLapParts = new OverLapRepository(_context);
PartGroups = new PartGroupRepository(_context);
Settings = new SettingsRepository(_context);
CreateDefaultDatabase(contextMain.Database.CreateIfNotExists(), _context);
}
最后,當我想使用我的數據庫時,我這樣稱呼它:
using (var _unitOfWork = new UnitOfWork(new MyContext())){}
更新:我嘗試關閉實體框架的延遲加載,但這並沒有影響異常。 我還是收到了。
這個 ObjectContext 還沒有運行,如果我點擊那個圖標來運行線程,我不再得到這個異常。 我不知道如何強制這些線程在創建時運行。
我正在使用以下內容:
.NET 框架 4.8
實體框架 6.4.4
Mysql.Data 8.0.21
MySql.Data.EntityFramework 8.0.21
如果您在調試選項中選中 Just My Code,您應該不會再看到這種情況。 這里解釋:
在使用 Devart dotConnect 提供程序進行代碼優先上下文初始化期間,PostgreSQL 日志中出現錯誤“列 c.CreatedOn 不存在...”
如果您不想打開 Just My Code,那么您可以在拋出異常的地方添加異常處理。 以下內容並不優雅,但應該可以:
try
{
...
}
catch (MySqlException e)
{
if(!e.Message.Equals("Unknown column 'CreatedOn' in 'field list'")
{
throw;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.