![](/img/trans.png)
[英]Entity Framework Core 2.1, rename table using code-first migrations without dropping and creating new table
[英]Entity Framework Core 2.2.3 not creating table using code-first approach vs 2017
嗨,我正在嘗試從以下教程中學習EntityFramework Core :http: //www.entityframeworktutorial.net/code-first/what-is-code-first.aspx
到目前為止,我已經創建了
由於某種原因,我無法使用代碼優先方法生成數據庫表。 框架:
我的代碼如下:
using Microsoft.EntityFrameworkCore;
namespace EntityFrameworkTuts.repo
{
public class TwitterDbContext: DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<Tweet> Tweet { get; set; }
public TwitterDbContext() : base()
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Data Source=sys-win;Initial Catalog=milton;Persist Security Info=True;User ID=sa;Password=password");
}
}
}
namespace EntityFrameworkTuts
{
public class User
{
public long Id { get; set; }
public string Name { get; set; }
public ICollection<Tweet> Tweets { get; set; }
}
}
namespace EntityFrameworkTuts
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
using (var context = new TwitterDbContext())
{
User user = new User
{
Name = "John Doe",
};
context.Users.Add(user);
var result = context.SaveChanges();
Console.WriteLine($"save user ${user.Name} with id ${result}");
}
}
}
}
我在下面得到例外:
Unhandled Exception: Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while updating the entries. See the inner exception for details. ---> System.Data.SqlClient.SqlException: Invalid object name 'Users'.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)
at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute(IRelationalConnection connection, DbCommandMethod executeMethod, IReadOnlyDictionary`2 parameterValues)
at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteReader(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues)
我進行了少量研究,似乎框架無法找到Users表。
EFCore 2.2.3是否應該自動創建一個? 請讓我知道我可能正在做的愚蠢錯誤。
編輯:感謝Marc清除版本懷疑。
感謝@ er-sho,我設法使用代碼優先方法生成數據庫。 以下事情對我有幫助:
轉到工具=> Nuget軟件包管理器=>軟件包管理器控制台。
用於創建數據庫遷移代碼
dotnet ef migrations add CreateDatabase --output-dir Data/Migrations
執行遷移代碼:
dotnet ef database update
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.