C# 使用默认值更改SQL Server用户定义的类型仍然强制我传递新列

C# 使用默认值更改SQL Server用户定义的类型仍然强制我传递新列,c#,sql-server,C#,Sql Server,我们使用默认值向SQLServer用户定义表添加了一个新列。 因此,我希望旧代码能够正常工作并使用默认值,但我从ado.net返回了一个错误 System.Data.SqlClient.SqlException(0x80131904):尝试传递具有8列的表值参数,其中相应的用户定义表类型需要9列 错误与默认值或默认值无关,而是与表参数中的列数有关。您必须修改.NET代码。更改.NET代码:这就是我试图避免的。我需要一种可以改变用户定义类型而不必改变.net代码的方法。就像我们在storedPro

我们使用默认值向SQLServer用户定义表添加了一个新列。 因此,我希望旧代码能够正常工作并使用默认值,但我从ado.net返回了一个错误

System.Data.SqlClient.SqlException(0x80131904):尝试传递具有8列的表值参数,其中相应的用户定义表类型需要9列


错误与默认值或默认值无关,而是与表参数中的列数有关。您必须修改.NET代码。更改.NET代码:这就是我试图避免的。我需要一种可以改变用户定义类型而不必改变.net代码的方法。就像我们在storedProcedures中所做的那样,通过添加带有默认值的新参数。我不知道,不知道。但是其他人可能知道得更好。为什么更改.NET代码如此重要?我们有一个db服务器和两个应用服务器。在部署期间,一次只有一台应用服务器停机,以保持24/7可用性。当数据库使用一个应用服务器更新时,另一个使用旧代码的应用服务器将保持活动状态,因为客户将因架构更改而崩溃。如果他们有任何理由,没有人承诺100%的正常运行时间。这可能是总停机几分钟的情况之一。我希望部署这个应用不会花很长时间?
_typeSqlMetaData = Create table schema - old table structure
SqlDataRecord record = new SqlDataRecord(_typeSqlMetaData);
record.SetInt16(0, someData);
record.SetGuid(1, someGuid);
record.SetDecimal(2, Amount);
.
.
.
record.SetBoolean(7, someflag);