簡體   English   中英

運行更新數據庫時,EF代碼優先“字符串或二進制將被截斷”

[英]EF Code First “String or binary would be truncated” when running Update-Database

我的遷移如下所示:

    public override void Up()
    {
        AddColumn("dbo.TargetTable", "Table1Id", c => c.Int(nullable: false));
        AddForeignKey("dbo.TargetTable", "Table1Id", "dbo.Table1", "Id");

        AddColumn("dbo.TargetTable", "Table2Id", c => c.Int(nullable: false));
        AddForeignKey("dbo.TargetTable", "Table2Id", "dbo.Table2", "Id");
    }

    public override void Down()
    {
        DropForeignKey("dbo.TargetTable", "Table1Id", "dbo.Table1", "Id");
        DropColumn("dbo.TargetTable", "Table1Id", c => c.Int(nullable: false));

        DropForeignKey("dbo.TargetTable", "Table2Id", "dbo.Table2", "Id");
        DropColumn("dbo.TargetTable", "Table2Id", c => c.Int(nullable: false));

    }

當我運行“ Update-Database”時,出現錯誤:字符串或二進制數據將被截斷。 該語句已終止。

我沒有創建任何表,只是在現有表中添加了兩列。 所以我不確定這個錯誤可能來自哪里。 我沒有操縱任何字符串或二進制列。 任何幫助將非常感激。

編輯

該表是空的。 它沒有行,這就是為什么列不可為空的原因。

該模型:

 public class TargetTable
{
    //This column already exists.
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    public int Table1Id { get; set; }
    public virtual Table1 Table1 { get; set; }

    public int Table2Id { get; set; }
    public virtual Table2 Table2 { get; set; }
}

您正在將不可為空的字段插入現有表。 如果表包含行,將導致錯誤。

確保列和外鍵上的類型相同

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM