当前位置:首页 » 数据仓库 » codefirst数据库迁移
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

codefirst数据库迁移

发布时间: 2022-11-16 10:09:03

A. ASP.Net mvc 使用entity framework 6 连接Mysql数据库进行数据迁移(migration)时,报错。

序列不包含任何匹配元素。Code first

应该是主外键的问题

EF 在生成模型时 即便是中间表也必须设置主键 不然会出错

B. c#变成中,实体增加了属性,迁移数据库不成功,提示表已存在,这是为什么

增加属性并不一定保证使用AddColumn,有时候EF认为无法AddColumn的,如造成外键关系变化等情况,它会把原来的表drop掉重新再create,但是这并不会造成迁移不成功。
你注意看你的每一个Migration类,都会同时overrideg两个方法,一个Up一个Down,在迁移的时候,会先调用Migration.Down,这里面会把原来的表drop掉,然后相应会在Up方法里CreateTable。所以如果你的迁移不成功,要检查错误报告,看是不是别的原因造成的。

C. code first 组建表关系有没有简单的方法

并没有,code first属于纯手工的活儿,写数据类和映射关系,然后进行数据迁移

D. 如何强制实体框架总是从数据库中获取更新的数据

如何强制实体框架总是从数据库中获取更新的数据
EF本身就是C#中实体和DB的映射,更新实体其实就是更新数据库。
1、
如果是DB FIRST,那么你的实体是跟着DB走的,你必须更新表结构,然后在VS中重新生成模型,实体才会跟着变。
如果只把entity字段改了,那么运行的时候会报错的。

2、如果是codefirst,那么你更新实体之后,EF会更新你的DB结构, 这时候你就需要去选择迁移数据还是重建了。 迁移的教程参考MSDN,命令比较复杂。 重建只需要在初始化器里override方法: DropDatabaseIfModified(如果结构改变则自动重新生成数据库)。

E. enable-migrations 包控制台使怎么使用

如果你还在为 支持xxx上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库 找到你的数据库上下文所在的类库(一般都是写在项目中的model中,也有的独立model类库) 打开Nuget 程序包管理控制台 输入:Enable-Migration

F. 支持"TestSqlDB"上下文的模型已在数据库创建后发生更改.请考虑使用 Code First 迁移更新数据库

把数据库的冲突的表名字改掉,迁移完成后改回去

G. 如何使用CodeFirst进行数据迁移

如果你还在为 支持xxx上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库 找到你的数据库上下文所在的类库(一般都是写在项目中的model中,也有的独立model类库) 打开Nuget 程序包管理控制台 输入:Enable-Migrations 回车 如果正确的话 则显示已为项目 xxx启用 Code First 迁移。 我在这里说下 几种有可能出现的错误: 1.No context type was found in the assembly xxx 在当前项目中 没有找到数据库上下文,也就是DbContext 继承的的 "数据库.cs" 2.The EntityFramework package is not installed on project xxx 当前项目已经找到了数据上下文,但是没有EntityFrameWork 需要安装输入 install-package entityframework(手大的 不知道对不对) 基本就这两个问题,如果安装成功则在项目中 出现Migrations文件夹,里面会记录每次数据迁移所发生的变化。 非常好用,不用再删除数据库 重新生成 数据丢失等问题。 常用语句 :enable-Migrations -Force 替换迁移数据文件 update-database 更新 add-migration 添加新的更新文件

H. entity framework codefirst 不能创建数据库表。

使用Entity Framework CodeFirst模式创建新数据库
开发环境
Visual Studio 2010 SP1
SQL Server Compact 4.0
演练步骤
打开Visual Studio;
新建Console应用程序Known.EFDemo;
创建Blog模型;public class Blog
{
public int Id { get; set; }
public string Name { get; set; }
public List<Post> Posts { get; set; }
}

public class Post
{
public int Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
}


右击项目->管理NuGet程序包,搜索Entity Framework并安装;或使用程序包管理器控制台运行命令Install-Package EntityFramework;
创建BlogContext;

public class BlogContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
}


修改App.config文件,配置ConnectionString和SQL Server Compact数据提供者工厂;<connectionStrings>
<add name="BlogContext" connectionString="Data Source=|DataDirectory|Blog.sdf" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SqlServerCe.4.0" />
<add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
</DbProviderFactories>
</system.data>


修改Program并运行,成功后,可以在服务器资源管理器中查看自动生成的表结构及数据。using (var context = new BlogContext())
{
Console.WriteLine("请输入博客名称:");
var name = Console.ReadLine();
var blog = new Blog { Name = name };
blog.Posts = new List<Post>();

Console.WriteLine("请输入随笔标题:");
var title = Console.ReadLine();
Console.WriteLine("请输入随笔内容:");
var content = Console.ReadLine();
blog.Posts.Add(new Post { Title = title, Content = content });

context.Blogs.Add(blog);
context.SaveChanges();

Console.WriteLine("保存成功!");
}


当模型改变时,可以使用命令自动迁移数据库,配置命令:Enable-Migrations –EnableAutomaticMigrations ;更新命令:Update-Database –Verbose 。

I. 如何使用CodeFirst进行数据迁移

如果你还在为
支持xxx上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库
找到你的数据库上下文所在的类库(一般都是写在项目中的model中,也有的独立model类库)
打开Nuget 程序包管理控制台
输入:Enable-Migrations 回车
如果正确的话 则显示已为项目 xxx启用 Code First 迁移。
我在这里说下 几种有可能出现的错误:
1.No context type was found in the assembly xxx
在当前项目中 没有找到数据库上下文,也就是DbContext 继承的的 "数据库.cs"
2.The EntityFramework package is not installed on project xxx
当前项目已经找到了数据上下文,但是没有EntityFrameWork 需要安装输入 install-package entityframework(手大的 不知道对不对)
基本就这两个问题,如果安装成功则在项目中 出现Migrations文件夹,里面会记录每次数据迁移所发生的变化。
非常好用,不用再删除数据库 重新生成 数据丢失等问题。