2016-11-06 54 views
0

在ASP.net核心中,我試圖更新模型類以將字段從iFormFile更改爲字符串。 即。爲了響應comment 來存儲文件名而不是圖像文件。無法在asp.net核心中執行數據庫遷移[Column NULL]

更新模型類並相應地執行更改後,網頁提示我更新數據庫/遷移。

首先,有人可以指點我的信息這是什麼意思遷移

其次,我有以下的錯誤輸入下面的命令

dotnet ef database update 

我收到以下錯誤後:

Cannot insert the value NULL into column 'StaffID', table 'aspnet- 
newbienoob-59e13649-49be-4a5f-9365-d1b8cc6588d5.dbo.Employee'; 
column does not allow nulls. UPDATE fails. 

回答

0

感謝Temi的回覆。

數據庫遷移以某種方式失敗。

瞭解up()和down()方法在遷移過程中生成的cs文件中的作用。我自己修改了SQL語句。

即。

public partial class initial2 : Migration 
{ 
    protected override void Up(MigrationBuilder migrationBuilder) 
    { 

     migrationBuilder.DropColumn(
      name: "StaffID", 
      table: "Employee"); 

     migrationBuilder.AddColumn<string>(
      name: "StaffIdentity", 
      table: "Employee", 
      nullable: true, 
      defaultValue: ""); 
    } 
} 

基本上我所做的就是回滾所有的遷移和返工上一個新的遷移到更新表。

即。 dotnet ef migrations remove

我可以從基本表從頭開始恢復。

0

我相信你正在使用的代碼首先遷移創建數據庫。首先,您需要使用IformFile數據類型將數據庫從模型遷移到使用字符串數據類型的數據庫。

在命令提示符中使用以下語法。 dotnet ef migrations添加[遷移名稱]。像這樣

dotnet ef migrations add myfirstmigration

不是最好的移民的名字,但你的想法。 接下來,像你已經完成的那樣更新數據庫。

dotnet ef database update

+0

我確實做到了。我仍然有問題 的錯誤如下 項目newbienoob(.NETCoreApp,版本= V1.0)將被編譯,因爲輸入項​​目從去年的構建 編譯newbienoob爲.NETCoreApp補充,版本= V1.0 編譯成功了。 0警告(S) 0錯誤(S) 所經歷的時間00:00:02.7244932 System.Data.SqlClient.SqlException:無法將NULL值插入列 'STAFFID是' 表「ASPNET-newbienoob-59e13649-49be -4a5f-9365-d1b8cc6588d5.dbo.Employee';列不允許有空值。更新失敗。 該聲明已被終止。 –

+0

似乎有幾個數據庫遷移失敗。 –