我有这个班级模型:
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) 在ef 7中,我使用命令'dnx ef migrations add Initial'创建了初始迁移.当我运行应用程序数据库是为我创建的,一切都很好.
然后我更新了我的实体对象(CSharp文件).现在该怎么办:
我收到错误:数据库中已存在一个对象.
此外,任何资源,我可以首先找到实体框架代码的良好实际示例,因为我正在努力加快速度.
谢谢,Javed
c# ef-code-first ef-migrations entity-framework-core asp.net-core
我正在使用Code First Migrations Beta 1.
我想看看在我实际上在Package Manager控制台上调用'Update-Database'之前运行的迁移和SQL.
是否有命令在Package Manager控制台上获取此信息?
我正在为我的项目进行数据迁移.但我有一个问题,例如:我有以下字段的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 改变后(我失去了我的名字字段数据).
我的应用程序中有两个非常简单的接口
表示保存在数据库中的实体
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) 我正在开发一个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
EF7 migration add命令(迄今为止,beta5)将DbContext针对当前模型快照定义的模型类进行比较,创建新的迁移类,并更新模型快照.
我需要修改迁移,使其生成不同的DDL SQL.例如,EF7使用SQL Server自动增量值的序列,我希望它使用标识.然而,这可能是任何其他原因.该migration remove命令将物理删除迁移文件并还原模型快照,因此在这种情况下它是无用的.
有3个文件包含看起来需要编辑的相关代码:
Up和Down方法.DbContextModelSnapshot文件包含需要修改的注释[migration].Designer.cs文件还包含迁移的模型快照.我假设这个快照需要匹配第2项中的模型快照,但我不确定.我有关于它的目的的唯一信息来自Brice的博客,该博客说:"如果您或提供商需要在迁移过程中检查模型以获取更多信息,那就是存在的."具体问题:
我已经设置了实体框架来使用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生成所有内容.前缀,不起作用.
有人有解决方案吗?
我在该视频上执行了每一步https://www.youtube.com/watch?v=i7SDd5JcjN4
并且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) 我刚刚开始使用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) ef-migrations ×10
c# ×5
.net-core ×1
asp.net-core ×1
ef-core-2.0 ×1
mysql ×1
sql-server ×1
sqlite ×1