【问题标题】:Entity Framework: Regeneration of changed tables (key changes)实体框架:重新生成已更改的表(关键更改)
【发布时间】:2010-10-22 03:04:09
【问题描述】:

我有一个相当大的数据库连接到我的实体框架。我有一组特定的表,其中从设计中删除了一个公用键 (fk)。当我“从数据库更新模型”时,我收到一系列关于这个现在缺失的键的错误。

为什么更新过程不能准确检测到此密钥已被删除?此外,如果我手动从模型中删除该属性,我只会遇到其他错误。我还尝试简单地删除表并重新添加它,但现在该表没有显示在更新向导的“添加”部分中。

那么,除了删除整个事情并重新开始之外,有什么方法可以优雅地恢复吗? EF 团队是否发布了该向导的任何更新版本,其中已经修复了其中一些问题?

【问题讨论】:

    标签: c# entity-framework .net-3.5


    【解决方案1】:

    实体框架确实会时不时地感到困惑。您需要做的是从模型中删除实体表,然后将 SQL Server 中的表重命名为 TableName_Temp,刷新模型,现在实体表应该没问题,所以再次删除实体表将其重命名为原始名称并再次刷新模型。这次应该没事了。

    我知道这是一个混乱的程序,但这是我发现解决此问题的唯一方法,而不会破坏整个 edmx 并从头开始。目前在我的组织中,我们有一项政策,除非绝对必要,否则我们不会对 EDMX 进行更改,以便我们可以在需要时删除和重新创建而不会出现任何问题。

    希望这会有所帮助!

    【讨论】:

    • 这不是对再生过程的悲哀评论吗?公司的规则是根本不允许 edmx 更改? MS 应该真正为人们解决这个痛点。
    • 我相信他们在 4.0 版本中解决了 LINQ to SQL 和 LINQ to Entities 的大部分痛点。他们甚至提供了一种模式,您甚至不需要 EDMX 文件。我不确定该模式的功能有多全面,但如果您不使用 Fluent 映射,它可以提供比 NHibernate 更简洁的实现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多