RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 736024
Accepted
nick_n_a
nick_n_a
Asked:2020-10-26 14:49:16 +0000 UTC2020-10-26 14:49:16 +0000 UTC 2020-10-26 14:49:16 +0000 UTC

如何在 EF 中添加表?

  • 772

有一个项目,需要将表添加到其中。一切都会好起来的,只是在我做 drop database 之后,表没有出现在数据库中,好吧,我可以理解得到一个异常。(我补充说是的,当我启动项目时表没有出现,我认为删除 DBMS 会强制创建它,为此我删除了 subd)MySQL 基础。现在了解更多详细信息...在 Entities\DataBase 文件夹中添加了一个表

namespace MyProj.Domain.Entities.Database{
  public class Company{
    [Key]
    public int Id { get; set; }

    [MaxLength(255)]
    public String Name { get; set; }
}}

继续前行。文档说要查看 Entities\Migrations\Configuration.cs,我看...

internal sealed class Configuration : DbMigrationsConfiguration<MyProj.Domain.Concrete.MysqlEfDbContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = false;
        CodeGenerator = new MyCodeGenerator();
    }

我走进MysqlEfDbContext

[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class MysqlEfDbContext : DbContext
{
   public DbSet<Company> Companies { get; set; } // Дописал сюда таблицу, 
   // тут аналогично находятся другие таблицы
   public DbSet<User> Users { get; set; }
}

是的,该类MyCodeGenerator- 不包含对表的引用。没发布,没看到有什么特别的,方法Generate和调用的拦截。StripDbo

在更改之前 - 数据库、表已创建并且一切正常。更改后,创建了一个没有新表的数据库,并且出现了异常

无法更新数据库以匹配当前模型,因为存在待处理的更改并且自动迁移已禁用。将挂起的模型更改写入基于代码的迁移或启用自动迁移。将 DbMigrationsConfiguration.AutomaticMigrationsEnabled 设置为 true 以启用自动迁移。

好吧,既然他们写true了——顺其自然,我们就说吧 AutomaticMigrationsEnabled = true;。然后我得到另一个错误

表 'concreteperiods' 已经存在。

(这是要创建的第一个表的名称)。公司表现已创建。第一个和第二个错误都出现在这里:

var user = (_repository.Users != null)?_repository.Users.
   ToList().FirstOrDefault(x => x.Username.Equals(model.UserName) 
 && x.Password.Equals(model.Password)) : null;

我看看是什么_repository

namespace MyProj.WebUI.Controllers
{
public class AccountController : Controller
{
    private IProductRepository _repository;
    readonly IAuthProvider _authProvider;
    public AccountController(IAuthProvider auth, IProductRepository repo)
    {
        _repository = repo;
        _authProvider = auth;
    }

没有AccountController链接。

阅读有关迁移的信息。现在是移民的故事。
在控制台启用迁移。Studio zero - 出现错误 - 我不知道命令。在项目上制作鼠标右键-> 恢复包。启用迁移

PM> Enable-Migrations
Code First Migrations enabled for project MyProj.Domain.
PM> Add-Migration "company"
The project 'MyProj.Domain' failed to build.

我查看了项目 - 我在根目录中创建了另一个 Migrations 文件夹,其中还有另一个 Configuration.cs 文件 - 结果 - 项目不会,因为 Configuration 类被声明了两次。删除,重复添加迁移“公司”我得到一个错误更有趣......

PM> Add-Migration "company" System.NullReferenceException:对象引用未指向对象的实例。在 MySql.Data.MySqlClient.MySqlProviderServices.GetDbProviderManifestToken(DbConnection 连接) 在 System.Data.Entity.Core.Common.DbProviderServices.GetProviderManifestToken(DbConnection 连接) 在 MySql.Data.Entity.MySqlManifestTokenResolver.ResolveManifestToken(DbConnection 连接) 在 ... System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.Run() 到 System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate) 到 System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate) 到 System.Data.Entity.Migrations.Design.ToolingFacade。在 System.Data.Entity.Migrations.Design.ToolingFacade.Scaffold 运行(BaseRunner runner)(字符串迁移名称,字符串语言,

EntityFramework 版本 6.0.0.0,运行时 v 4.0.30319

VS 2017

您还能看到什么,是否有需要在“第一次启动”时创建的表列表?

c#
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Ares
    2020-10-26T14:57:59Z2020-10-26T14:57:59Z

    添加新表后,您必须创建迁移。

    我们进入包管理器控制台(Pkgmgr.exe):

    • Enable-Migrations- 启用迁移。

    • Add-Migration "Название"- 添加新的迁移。

    • Update-Database- 数据库更新。

    更新:或者您可以创建自己的初始化程序,从它继承,DropCreateDatabaseAlways<T>并在每次运行时重新创建基础(丢失数据)。

    • 4

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    Python 3.6 - 安装 MySQL (Windows)

    • 1 个回答
  • Marko Smith

    C++ 编写程序“计算单个岛屿”。填充一个二维数组 12x12 0 和 1

    • 2 个回答
  • Marko Smith

    返回指针的函数

    • 1 个回答
  • Marko Smith

    我使用 django 管理面板添加图像,但它没有显示

    • 1 个回答
  • Marko Smith

    这些条目是什么意思,它们的完整等效项是什么样的

    • 2 个回答
  • Marko Smith

    浏览器仍然缓存文件数据

    • 1 个回答
  • Marko Smith

    在 Excel VBA 中激活工作表的问题

    • 3 个回答
  • Marko Smith

    为什么内置类型中包含复数而小数不包含?

    • 2 个回答
  • Marko Smith

    获得唯一途径

    • 3 个回答
  • Marko Smith

    告诉我一个像幻灯片一样创建滚动的库

    • 1 个回答
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Алексей Шиманский 如何以及通过什么方式来查找 Javascript 代码中的错误? 2020-08-03 00:21:37 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5