C# “EF代码优先”;字符串或二进制将被截断;运行更新数据库时
我的迁移如下所示:C# “EF代码优先”;字符串或二进制将被截断;运行更新数据库时,c#,.net,entity-framework,C#,.net,Entity Framework,我的迁移如下所示: public override void Up() { AddColumn("dbo.TargetTable", "Table1Id", c => c.Int(nullable: false)); AddForeignKey("dbo.TargetTable", "Table1Id", "dbo.Table1", "Id"); AddColumn("dbo.TargetTable", "Table2Id"
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));
}
当我运行“更新数据库”时,我得到一个错误:
字符串或二进制数据将被截断。
声明已终止
我没有创建任何表,只是在现有表中添加了两列。所以我不确定这个错误是从哪里来的。我没有操作任何字符串或二进制列。任何帮助都将不胜感激
编辑
桌子是空的。它没有行,这就是列不可为空的原因
模型:
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; }
}
您正在将不可为空的字段插入现有表中。若表中包含行,则会导致错误。将不可为空的字段插入到现有表中。如果表中包含行,则会导致错误。确保列上的类型和外键上的类型相同确保列上的类型和外键上的类型相同它们是,Id列是整数。表中有触发器吗?它们是“Id”列是整数。表上有触发器吗?可以发布模型吗?可以发布模型吗?