gpt4 book ai didi

c# - Entity Framework - MySQL - 未知异常

转载 作者:行者123 更新时间:2023-12-04 15:06:56 25 4
gpt4 key购买 nike

我有一个问题,我不确定是什么原因造成的。我有一个代码优先的 Entity Framework 数据库,并且在第一次运行时一切正常。数据库已创建且未抛出任何异常。

在第二次运行时,当 Entity Framework 启动并且我第一次尝试调用“保存”函数时,它抛出了这个异常:(我的表中没有一个名为 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 类之前正确确保我们连接。所以我有这个类将我所有的数据库表连接到我的上下文:

 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())){}

更新:我试图关闭 Entity Framework 的延迟加载,但这并没有影响异常。我仍然收到它。

这里有一条线索可以帮助知识渊博的人: enter image description here

这个 ObjectContext 还没有运行,如果我点击那个图标来运行线程,我就不会再得到这个异常。我不知道如何强制这些线程在创建时运行。

我正在使用以下内容:

.NET 框架 4.8

Entity Framework 6.4.4

Mysql.Data 8.0.21

MySql.Data.EntityFramework 8.0.21

最佳答案

如果您在调试选项中选中“仅我的代码”,您应该不会再看到它。在这里解释:

Error "column c.CreatedOn does not exist..." in PostgreSQL logs during code first context initialization using the Devart dotConnect provider

如果您不想打开“仅我的代码”,那么您可以在抛出异常的地方添加异常处理。以下是不优雅但应该工作:

try
{
...
}
catch (MySqlException e)
{
if(!e.Message.Equals("Unknown column 'CreatedOn' in 'field list'")
{
throw;
}
}

关于c# - Entity Framework - MySQL - 未知异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65956376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com