字段列表中的 EF4 未知列

2024-04-06

所以,我有点难住了。我一直在使用通用存储库,它工作得很好。它位于实体框架 4.1 之上。我曾多次使用同一行代码来获取一组数据,之前没有任何问题。然而,我的数据库中的这张表似乎抛出了异常,我一生都无法弄清楚如何修复它。

这是MySQL数据库中的表设计

Completed
=========
CompletedId
OldStepId
NewStepId
Name

Step
====
StepId
Name
Description

这是 model.cs 定义

public class Completed
{
    [Key]
    public int CompletedId { get; set; }

    public int OldStepId { get; set; }
    public int NewStepId { get; set; }
    public string Name { get; set; }

    public virtual Step OldStep { get; set; }
    public virtual Step NewStep { get; set; }
}

public class Step
{
    [Key]
    public int StepId { get; set; }

    public string Name { get; set; }
    public string Description { get; set; }
}

上下文定义

public DbSet<Completed> Completeds { get; set; }
public DbSet<Step> Steps { get; set; }

控制器调用有问题的代码

var completeds = new List<Completed>();
using (var gm = new GenericRepo<Completed>())
{
  completeds = gm.Get().ToList();
}

存储库的get方法(简化)

public IEnumerable<T> Get()
{
 var context = new exampleContext();
 DbSet<T> dbSet = context.Set<T>();
 IQueryable<T> query = dbSet;
 return query.ToList();
}

这是导航到操作时从浏览器收到的错误

Unknown column 'Extent1.OldStep_StepId' in 'field list'

这是从调试器获得的内部异常

InnerException: MySql.Data.MySqlClient.MySqlException
   Message=Unknown column 'Extent1.OldStep_StepId' in 'field list'
   Source=MySql.Data
   ErrorCode=-2147467259
   Number=1054
   StackTrace:
        at MySql.Data.MySqlClient.MySqlStream.ReadPacket()
        at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int32& insertedId)
        at MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int32& insertedId)
        at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
        at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
        at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
        at MySql.Data.Entity.EFMySqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
        at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
        at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)

这是在错误导致应用程序崩溃之前调试器似乎出现问题的查询

{SELECT
`Extent1`.`CompletedId`, 
`Extent1`.`OldStepId`, 
`Extent1`.`NewStepId`, 
`Extent1`.`Name`, 
`Extent1`.`OldStep_StepId`, 
`Extent1`.`NewStep_StepId`, 
`Extent1`.`Step_StepId`, 
`Extent1`.`Step_StepId1`
FROM `Completed` AS `Extent1`}

使用反射,我能够确定或至少假设,StepId 未显示为 Step 中的字段的原因可能是因为 Step 出于某种原因定义为“已完成”。情况可能并非如此。我不确定为什么会发生这个错误。

以前有人在实体框架中遇到过类似的事情吗?这是我的代码有问题吗?这是表连接方式的问题吗?我对这个设置有类似的定义,它可以完美地工作,所以我不明白这里的差异。该表与所有其他表之间的唯一区别是对同一对象有两个引用(注意:Completed 类包含两个虚拟 Step 对象)。

另请注意:这是notEF 代码优先。


我认为这个问题是因为您尚未配置导航属性以使用您定义的 FK 字段。

你应该使用:

modelBuilder.Entity<Completed>().HasRequired(e => e.OldStep ).WithMany().HasForeignKey(e => e.OldStepId )

or try:

public class Completed
{
    [Key]
    public int CompletedId { get; set; }

    public int OldStepId { get; set; }
    public int NewStepId { get; set; }
    public string Name { get; set; }
        
    [ForeignKey("OldStepId")]
    public virtual Step OldStep { get; set; }

    [ForeignKey("NewStepId")]
    public virtual Step NewStep { get; set; }
}

public class Step
{
    [Key]
    public int StepId { get; set; }

    public string Name { get; set; }
    public string Description { get; set; }
}

参考http://xhalent.wordpress.com/2011/01/21/configuring-entity-framework-4-codefirst/ http://xhalent.wordpress.com/2011/01/21/configuring-entity-framework-4-codefirst/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字段列表中的 EF4 未知列 的相关文章

随机推荐

  • 检测图中的所有圆圈

    我有一个存储在 Map 数据结构中的有向图 其中键是节点的 ID value 是key节点所指向的节点的nodeId数组 Map
  • 如何在 T-SQL 中将 varchar 转换为 datetime?

    我正在尝试填充来自的数据table1 to table2 两者具有相同的列数 中的所有列table1属于类型varchar 中的列table2可能varchar int or datetime etc 我的问题是如何在填充过程中进行转换 这
  • 更改重复产品的 Magento 默认状态

    我安装了 Magento 商店 当后端复制产品时 Magento 默认将其状态设置为禁用 我不希望发生这种情况 复制的产品也应该从原始产品复制其状态 In 这个帖子 https stackoverflow com questions 465
  • Asp.net core 2 CORS预检请求响应缓慢

    我们有一个 asp net core 2 服务器 在性能测试中 当我们有几个 例如数十个 待处理请求时 新的 CORS 预检请求将保持待处理状态 看来asp net core对管道中的并发请求数有一定的限制 并且该限制的默认值非常低 是否有
  • Laravel 事件超出 Pusher 允许的限制

    我的 Laravel 应用程序中有一个事件 对于特定记录 它超出了 Pusher 允许的最大限制 10240 字节 Laravel 序列化 Event 类上的每个公共属性是否正确 如果是这样 我怀疑序列化模型不应超过 10kb 限制 但无论
  • 必须满足哪些条件才能通过 WPF DataGrid 编辑自定义集合?

    In short 我有自定义集合 我想使用数据网格显示和编辑 GUI 方式 第一部分 展示 有效 第二个 编辑 则不然 第一次尝试交互式编辑 由用户 时 我收到错误异常 EditItem is not allowed for this vi
  • 使外部 div 自动与其浮动内容高度相同

    我想要外层div 用黑色包裹它div漂浮在其中 我不想用style height 200px in the div与outerdivid 因为我希望它自动成为其内容的高度 例如 浮动divs div style border 1px sol
  • 无法打开与您的身份验证代理的连接

    我遇到了以下错误 git push heroku master Warning Permanently added the RSA host key for IP address 50 19 85 132 to the list of kn
  • 使用“array-contains”查询 Cloud Firestore 社交媒体结构

    我有一个由称为 民意调查 的集合组成的数据结构 民意调查 有几个具有随机生成 ID 的文档 在这些文档中 还有一个名为 答案 的附加集合集 用户对这些民意调查进行投票 所有投票都写入 答案 子集合中 我在 answers 节点上使用 run
  • 从 JQuery 向 Web API 进行 POST 时出现问题[重复]

    这个问题在这里已经有答案了 我有一个带有以下 POST 方法的 Web api public HttpResponseMessage Post FromBody string package 我有一个控制台应用程序 使用HttpCLient
  • 在 AspNetCore 与 TestServer 的集成测试中模拟并解决 Autofac 依赖关系

    我正在使用 AspNetCore 2 2 遵循 更多 此处的文档 https learn microsoft com en us aspnet core test integration tests view aspnetcore 2 2
  • C++ 中的字符串到枚举

    有没有办法将文本文件中的字符串与枚举值相关联 问题是 我有一些枚举值作为字符串存储在文本文件中 我在满足某些条件时即时读取这些值 现在我想将读取的值分配给枚举 最有效的方法是什么 它不需要是最简单的方法 您可以设置一张可以反复使用的地图 t
  • 如何使用 CMake 正确添加包含目录

    大约一年前我问过CMake 中的标头依赖项 https stackoverflow com questions 7461000 handling header files dependencies with cmake 我最近意识到问题似乎
  • 将自定义 MD5 公式与 ARRAYFORMULA 结合使用

    我实现了一个 MD5 公式 如下所述 function MD5 input var rawHash Utilities computeDigest Utilities DigestAlgorithm MD5 input Utilities
  • 如何判断我的应用程序是作为 32 位应用程序还是 64 位应用程序运行?

    如何判断我的应用程序 在 Visual Studio 2008 中编译为Any CPU 是作为 32 位还是 64 位应用程序运行 如果您正在使用 NET http en wikipedia org wiki NET Framework4
  • 如何禁止chrome打开“新窗口”和“标签”?

    他们是否可以通过 Chrome 浏览器设置将互联网上的所有页面保留在一个窗口中 或者我可以用一个插件 插件来做到这一点 当我单击某些链接时 我不希望在新选项卡和 或新窗口中打开网页 如果有人有任何建议请告诉我 谢谢 a href http
  • 在 Jenkins 中运行 Selenium 测试

    我通过 Selenium IDE 记录了一些简单的 Selenium 测试 现在我想在 Jenkins 中运行这些测试 我需要 Jenkins 的哪个插件才能做到这一点 以及如何逐步运行测试 感谢帮助 您可以使用录制的 selenium I
  • std::function 与 lambda 的比较

    如何比较 std function 和 lambda include
  • 改造和持久 cookie 存储

    在改造中实现持久 cookie 存储的最简单方法是什么 现在我正在使用这个 cookieManager new CookieManager cookieManager setCookiePolicy CookiePolicy ACCEPT
  • 字段列表中的 EF4 未知列

    所以 我有点难住了 我一直在使用通用存储库 它工作得很好 它位于实体框架 4 1 之上 我曾多次使用同一行代码来获取一组数据 之前没有任何问题 然而 我的数据库中的这张表似乎抛出了异常 我一生都无法弄清楚如何修复它 这是MySQL数据库中的