當前位置:首頁 » 數據倉庫 » 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文件夾,裡面會記錄每次數據遷移所發生的變化。
非常好用,不用再刪除資料庫 重新生成 數據丟失等問題。