Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在单个NHibernate事务中删除列并在同一个表中添加具有相同名称的列?_C#_Sql Server_Nhibernate - Fatal编程技术网

C# 如何在单个NHibernate事务中删除列并在同一个表中添加具有相同名称的列?

C# 如何在单个NHibernate事务中删除列并在同一个表中添加具有相同名称的列?,c#,sql-server,nhibernate,C#,Sql Server,Nhibernate,环境:C#,NHibernate,SQL server 情景: 我必须修改表中的一列,在运行时,只有我们知道需要如何修改。因此,我们不需要修改列,只需删除现有列并添加一个同名的新列。我们不打算保留该列的数据。因此,添加/删除方法应该可以正常工作。一个约束条件是,删除和添加都应该发生在单个事务中 问题是: 如果我必须删除并重新添加的列有一些数据,则该列不起作用。它给了我这个错误: ALTER TABLE只允许添加可能包含NULL的列,或指定了默认定义的列,或添加的列是标识或时间戳列,或者如果前面的

环境:C#,NHibernate,SQL server

情景:

我必须修改表中的一列,在运行时,只有我们知道需要如何修改。因此,我们不需要修改列,只需删除现有列并添加一个同名的新列。我们不打算保留该列的数据。因此,添加/删除方法应该可以正常工作。一个约束条件是,删除和添加都应该发生在单个事务中

问题是:

如果我必须删除并重新添加的列有一些数据,则该列不起作用。它给了我这个错误:

ALTER TABLE只允许添加可能包含NULL的列,或指定了默认定义的列,或添加的列是标识或时间戳列,或者如果前面的条件都不满足,则该表必须为空才能添加此列。

我假设,当我首先删除列时,重新添加应该不会有问题,但它不会这样做

简化代码:

var dropColumn = string.Format("alter table {0} drop column {1} ",tableName, fieldName);
Session.CreateSQLQuery(dropColumn).ExecuteUpdate();

var addColumn = string.Format("alter table {0} add {1} nvarchar(255) not null",tableName,fieldName);
Session.CreateSQLQuery(addColumn).ExecuteUpdate();
我做错了什么?

错误是:“可以包含null,或者有一个默认值”,在第二个查询中,您有“notnull”。那么,在添加列之后,您希望该列中包含什么值(如果不是null)?如果您对此有答案,请使用默认值约束