天天看點

初次使用Entity Framework踩過的坑

1. 首先推薦剛開始使用EF的同學先看下這篇文章。

http://www.cnblogs.com/shijun/archive/2012/11/16/2772676.html 踩過坑後才找到這篇文章然後恍然大悟!

初次使用Entity Framework踩過的坑
初次使用Entity Framework踩過的坑
初次使用Entity Framework踩過的坑

再次謝謝分享這篇文章的同學。

2.下面是我參考的教程的連結

http://www.shaoqun.com/a/91504.aspx

3.以下是我按照教程做單過程中踩過的坑

     運作指令Enable-Migrations

        3.1直接貼錯誤資訊

More than one context type was found in the assembly 'WebApplication5'.

To enable migrations for 'WebApplication5.Models.ConnectionstringContext', use Enable-Migrations -ContextTypeName WebApplication5.Models.ConnectionstringContext.

To enable migrations for 'WebApplication5.Models.ApplicationDbContext', use Enable-Migrations -ContextTypeName WebApplication5.Models.ApplicationDbContext.

      3.2正确做法

          PM>  Enable-Migrations -ContextTypeName WebApplication5.Models.ConnectionstringContext

3.33. PM> Update-Database

         報錯資訊

Specify the '-Verbose' flag to view the SQL statements being applied to the target database.

System.InvalidOperationException: No connection string named 'MusicContext' could be found in the application config file.

   at System.Data.Entity.Internal.LazyInternalConnection.Initialize()

   at System.Data.Entity.Internal.LazyInternalConnection.get_Connection()

   at System.Data.Entity.Internal.LazyInternalContext.get_Connection()

   at System.Data.Entity.Infrastructure.DbContextInfo..ctor(Type contextType, DbProviderInfo modelProviderInfo, AppConfig config, DbConnectionInfo connectionInfo, Func`1 resolver)

   at System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration, DbContext usersContext, DatabaseExistenceState existenceState, Boolean calledByCreateDatabase)

   at System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration)

   at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.GetMigrator()

   at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.Run()

   at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)

   at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)

   at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)

   at System.Data.Entity.Migrations.Design.ToolingFacade.Update(String targetMigration, Boolean force)

   at System.Data.Entity.Migrations.UpdateDatabaseCommand.<>c__DisplayClass2.<.ctor>b__0()

   at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)

No connection string named 'MusicContext' could be found in the application config file.

           修改辦法,直接寫傳入連結接字元串

        public ConnectionstringContext() : base("Data Source = .;initial catalog=Music;integrated security=True"){ }

再次運作還是報錯,資訊如下;

資料庫中已存在名為 'Musics' 的對象。

解決辦法:

直接怒删資料庫表

重新輸入指令

 PM> Update-Database  輸出正确資訊,并且資料庫表單更新完畢。

總結:code first 模式隻适合建立資料庫表,不适合修改。若有不準确的地方歡迎拍磚。