标签: ef-migrations

EF6 Code First Key不自动递增

我有这个班级模型:

public class Results
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public int GameId { get; set; }
    public Games Game { get; set; }
    public string Notes { get; set; }
    public virtual ICollection<ResultItems> ResultItems { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,Id字段不会根据模式设置为自动递增:

CREATE TABLE [dbo].[Results] 
(
    [Id]     INT            NOT NULL,
    [GameId] INT            NOT NULL,
    [Notes]  NVARCHAR (MAX) NULL,

    CONSTRAINT [PK_dbo.Results] PRIMARY KEY CLUSTERED ([Id] ASC),
    CONSTRAINT [FK_dbo.Results_dbo.Games_GameId] 
        FOREIGN KEY ([GameId]) REFERENCES [dbo].[Games] ([Id]) ON DELETE CASCADE
); …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework ef-migrations

3
推荐指数
1
解决办法
3567
查看次数

如何更新实体框架7迁移和数据库 - 代码优先

在ef 7中,我使用命令'dnx ef migrations add Initial'创建了初始迁移.当我运行应用程序数据库是为我创建的,一切都很好.

然后我更新了我的实体对象(CSharp文件).现在该怎么办:

  1. 更新现有迁移?(或者我必须添加新的?)
  2. 更新已创建的数据库

我收到错误:数据库中已存在一个对象.

此外,任何资源,我可以首先找到实体框架代码的良好实际示例,因为我正在努力加快速度.

谢谢,Javed

c# ef-code-first ef-migrations entity-framework-core asp.net-core

3
推荐指数
1
解决办法
4977
查看次数

如何在调用"Update-Database"之前查看EF Code First Migrations更改

我正在使用Code First Migrations Beta 1.

我想看看在我实际上在Package Manager控制台上调用'Update-Database'之前运行的迁移和SQL.

是否有命令在Package Manager控制台上获取此信息?

entity-framework ef-code-first ef-migrations

2
推荐指数
1
解决办法
1171
查看次数

MVC3中的数据迁移(使用EF.4.3)

我正在为我的项目进行数据迁移.但我有一个问题,例如:我有以下字段的Book表:

ID  Name   Color

1   Java    red

2   MVC     blue

3   .Net    blue
Run Code Online (Sandbox Code Playgroud)

我尝试使用Code First技术将字段名称从"Color"更改为"BookColor".但迁移后,表格如下所示:

ID  Name   BookColor

1   Java    null

2   MVC     null

3   .Net    null
Run Code Online (Sandbox Code Playgroud)

我丢失了我的场地值.如何确保所有价值都被转移?

我正在使用Entity Framework和MVC3

编辑这是我的DBMigration类:

public partial class AddCreative : DbMigration
{

    public override void Up()
    {
        AddColumn("Authors", "Names", c => c.String(maxLength: 4000));
        DropColumn("Authors", "Name");
    }


    public override void Down()
    {
        AddColumn("Authors", "Name", c => c.String(maxLength: 4000));
        DropColumn("Authors", "Names");
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经改变Name,以Names 改变后(我失去了我的名字字段数据).

ef-code-first ef-migrations entity-framework-4.3

2
推荐指数
1
解决办法
1734
查看次数

如何创建和使用泛型类EntityTypeConfiguration <TEntity>

我的应用程序中有两个非常简单的接口

表示保存在数据库中的实体

public interface IEntity
{
    int Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

只有Nome字段作为保存实体的必填字段的实体

public interface IEntityName : IEntity
{
    string Nome { get; set; }
}   
Run Code Online (Sandbox Code Playgroud)

许多类实现了这个接口

public class Modalidade : IEntityName
{
    public int Id { get; set; }
    public string Nome { get; set; }
}
public class Nacionalidade : IEntityName
{
    public int Id { get; set; }
    public string Nome { get; set; }
}

public class Profissao : IEntityName
{
    public …
Run Code Online (Sandbox Code Playgroud)

ef-code-first ef-migrations entity-framework-5

2
推荐指数
1
解决办法
2482
查看次数

找不到对象"dbo.course",因为它不存在或者您没有权限

我正在开发一个ASP.NET MVC5 Web应用程序.我正在使用Entity Framework 6来满足我的数据存储需求.我正在使用它的代码第一个功能,启用了迁移.自动迁移设置为false.

我有两张桌子,我正试图改变.第一个表叫做课程,这是它的模型.

public class course
{
    [Key]
    public int courseID { get; set; }
    public int categoryID { get; set; }
    public int PaymentOptionsID { get; set; }
    [Required]
    [DisplayName("Course Code")]
    public string courseCode { get; set; }
    [Required]
    [DisplayName("Course Name")]
    public string courseName { get; set; }
    [Required]
    [DataType(DataType.Currency)]
    public decimal price { get; set; }
    [DataType(DataType.MultilineText)]
    [DisplayName("Course Description")]
    [StringLength(255, ErrorMessage = "Only a maximum of 255 characters are                                     allowed")]
    public string courseDescription { get; …
Run Code Online (Sandbox Code Playgroud)

c# sql-server ef-migrations entity-framework-6 asp.net-mvc-5

2
推荐指数
1
解决办法
4676
查看次数

手动编辑EF7迁移类和快照

EF7 migration add命令(迄今为止,beta5)将DbContext针对当前模型快照定义的模型类进行比较,创建新的迁移类,并更新模型快照.

我需要修改迁移,使其生成不同的DDL SQL.例如,EF7使用SQL Server自动增量值的序列,我希望它使用标识.然而,这可能是任何其他原因.该migration remove命令将物理删除迁移文件并还原模型快照,因此在这种情况下它是无用的.

有3个文件包含看起来需要编辑的相关代码:

  1. 主要迁移类:应该修改UpDown方法.
  2. DbContextModelSnapshot文件包含需要修改的注释
  3. 辅助迁移部分类:命名错误的[migration].Designer.cs文件还包含迁移的模型快照.我假设这个快照需要匹配第2项中的模型快照,但我不确定.我有关于它的目的的唯一信息来自Brice的博客,该博客说:"如果您或提供商需要在迁移过程中检查模型以获取更多信息,那就是存在的."

具体问题:

  1. 两个模型快照是否需要保持同步才能正确执行迁移?
  2. 修改3个单独的文件是编辑迁移的唯一方法吗?(虽然取决于更改,但在某些情况下可能不必触摸模型快照.)
  3. 是否有一些EF命令只能重新生成模型快照,而不是重新生成迁移方法?

ef-migrations entity-framework-core

2
推荐指数
1
解决办法
2487
查看次数

使用MySQL的EF和Code First迁移 - dbo.tablename不存在

我已经设置了实体框架来使用MySQL并创建了一个迁移.

当我运行update-database时,我得到错误"table dbname.dbo.tablename"不存在.在-Verbose模式下运行我看到导致错误的语句:

alter table `dbo.Comments` drop foreign key `FK_dbo.Comments_dbo.Comments_Comment_ID`
Run Code Online (Sandbox Code Playgroud)

当我在MySQL工作台中直接运行查询时会抛出相同的错误.

问题似乎是dbo.迁移集中的前缀.表单dbo.tablename中的任何内容都不会运行,表示该表不存在.例如select*from dbo.tablename失败但select*from tablename有效.数据库由Entity Framework生成,代码首次迁移也由EF生成.

但是,迁移会使用dbo生成所有内容.前缀,不起作用.

有人有解决方案吗?

mysql entity-framework ef-migrations

2
推荐指数
1
解决办法
5699
查看次数

实体框架代码首次迁移总是尝试创建新数据库

我在该视频上执行了每一步https://www.youtube.com/watch?v=i7SDd5JcjN4

  1. PM>启用迁移
  2. 更改我的实体模型(添加一些属性)
  3. PM> add-migration migrationName

并且VS重新生成用于创建数据库的代码.但我需要添加一个属性.

如果您需要代码:1.使用迁移生成:

public partial class alter2 : DbMigration
{
    public override void Up()
    {
        CreateTable(
            "dbo.Articles",
            c => new
                {
                    Id = c.Int(nullable: false),
                    Content = c.String(),
                })
            .PrimaryKey(t => t.Id)
            .ForeignKey("dbo.Chapters", t => t.Id)
            .Index(t => t.Id);

        CreateTable(
            "dbo.Chapters",
            c => new
                {
                    Id = c.Int(nullable: false, identity: true),
                    Title = c.String(),
                    CreationDate = c.DateTime(nullable: false),
                    Level = c.Int(nullable: false),
                    Url = c.String(),
                    Intro = c.String(),
                    Outro = c.String(),
                    MyProperty = c.Int(nullable: …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework ef-migrations

2
推荐指数
1
解决办法
687
查看次数

实体框架核心 - 如何访问Context.Database.Migrate()

我刚刚开始使用EF Core和Net Core,遇到了一个我无法找到答案的问题.

我正在使用一个使用SQLite数据库进行存储的控制台应用程序.我现在正在测试一些东西并且使用上下文工作正常.我的示例程序运行正常.请注意,我最初使用迁移来创建数据库.

现在最终当我完成这个应用程序时,我想确保数据库存在.正如其他帖子所述,这应该是完成的ctx.Database.Migrate().但是,我无法访问此方法.所以我的问题是我需要做什么才能访问它?我错过了一个添加扩展方法的包吗?我需要配置更多东西吗?

请原谅这个非常基本的问题,但我找不到任何相关的问题.因此,如果我不知道在哪里看,我也会对阅读建议感到高兴.

using System;
using MyLog.NetCore.Models;
using MyLog.NetCore.DataAccess;

namespace MyLog.NetCore
{
    internal class Program
    {
        #region Private Methods

        private static void Main(string[] args)
        {
            using (var ctx = new MyLogContext())
            {
                ctx.Add(new PartialLogEntry { PartialLogEntryID = 1, StartDateTime = 1, Title = "Test" });
                var count = ctx.SaveChanges();
                Console.WriteLine($"{count} changes saved to database!");

                Console.WriteLine();
                Console.WriteLine("All partial lof entries in database:");
                foreach (var entry in ctx.PartialLogEntries)
                {
                    Console.WriteLine($"ID: {entry.PartialLogEntryID}\tStart: {entry.StartDateTime}\tTitle: {entry.Title}");
                }
            }

            Console.ReadLine();
        } …
Run Code Online (Sandbox Code Playgroud)

c# sqlite ef-migrations .net-core ef-core-2.0

2
推荐指数
1
解决办法
583
查看次数