Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 映射到已存在的数据库列_C#_Entity Framework - Fatal编程技术网

C# 映射到已存在的数据库列

C# 映射到已存在的数据库列,c#,entity-framework,C#,Entity Framework,我们有一个使用EntityFramework6.0创建的应用程序,它首先使用代码创建数据库模式。DBA在已经存在的表上创建了一个新的生产列,并希望我们映射到它 查看我看到提到使用忽略,但我们希望字段被映射;我们只是不想创造它 最糟糕的情况是,我们将让DBA将列值复制到一个新的temp列中,首先用传统的方式用代码创建它,然后再将它复制回来。不过,如果可能的话,我们宁愿让代码先处理它。理想情况下,如果该列不存在,它会在dev/test/uat环境中创建该列,但不会在生产环境中删除该列。基于上述评论,

我们有一个使用EntityFramework6.0创建的应用程序,它首先使用代码创建数据库模式。DBA在已经存在的表上创建了一个新的生产列,并希望我们映射到它

查看我看到提到使用
忽略
,但我们希望字段被映射;我们只是不想创造它


最糟糕的情况是,我们将让DBA将列值复制到一个新的temp列中,首先用传统的方式用代码创建它,然后再将它复制回来。不过,如果可能的话,我们宁愿让代码先处理它。理想情况下,如果该列不存在,它会在dev/test/uat环境中创建该列,但不会在生产环境中删除该列。

基于上述评论,我知道您可以做些什么来解决此问题:

  • 确保您的POCO具有添加到表中的列

  • 转到NuGet的包管理器控制台并运行
    添加迁移
    。这将生成一个手动迁移文件,其中将包括它检测到的数据库需要存在的一些更改

  • 删除
    Up
    Down
    方法中的所有内容。只需保留签名和两个签名的空方法

  • 最后,在启用
    MigrateDatabaseToLatestVersion
    初始值设定项的情况下运行应用程序。在那之后你不应该看到任何错误


  • 我以前也遇到过同样的问题,这总能解决它。我不知道微软为什么要这样做,但我想这就是cookie崩溃的原因。

    我遇到了同样的问题-在空数据库(或尚未创建数据库)上添加迁移后,EF通知我模型中有一些更改,所以我应该运行添加迁移

    无法更新数据库以匹配当前模型,因为存在挂起的更改,并且禁用了自动迁移

    当我运行“添加迁移”时,新的迁移文件只添加一些已经存在的列,所以下一次更新数据库失败,因为我试图添加已经存在的列

    对我有帮助的是:

  • 运行添加迁移
  • 在新生成的文件中,删除
    Up
    Down
    方法的内容(或仅删除导致问题的行)

  • 您正在使用迁移吗?是的,我们正在使用MigratedatabasetolatesVersion初始值设定项。酷。我假设你每次运行应用程序时都会看到一个错误,说它无法创建列,因为它已经存在?是的,每次我们尝试运行应用程序时都会发生这种情况。获取一个错误,指示它无法创建列,因为它已经存在。听起来很好。我会尽快试一试,让你知道情况如何。