C# 为什么System.Data.SqlClient会抱怨我的声明?

C# 为什么System.Data.SqlClient会抱怨我的声明?,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我试图实现的是生成一个唯一标识符,并将其插入到我对表所做的每个条目中 我已经在UserID列中添加了默认值(newsequentialid()),因此,当我直接向数据库执行插入查询时,结果正如预期的那样(UserID会自动生成,并在每次添加新值时递增) 但是,当我通过提供以下错误的ASP.NET Web服务执行查询时,情况并非如此: System.Data.SqlClient.SqlException:操作数类型冲突:int为 与唯一标识符不兼容 我知道这个错误表示数据类型冲突,但我不打算从我

我试图实现的是生成一个唯一标识符,并将其插入到我对表所做的每个条目中

我已经在UserID列中添加了默认值
(newsequentialid())
,因此,当我直接向数据库执行插入查询时,结果正如预期的那样(UserID会自动生成,并在每次添加新值时递增)

但是,当我通过提供以下错误的ASP.NET Web服务执行查询时,情况并非如此:

System.Data.SqlClient.SqlException:操作数类型冲突:int为 与唯一标识符不兼容

我知道这个错误表示数据类型冲突,但我不打算从我的C代码中填充该列,而是应该自动添加该列?!(没有?)


uniqueidentifier
需要一个
GUID
您应该将UserId更改为Int将数据类型更改为Int如果您计划通过C#code填充该字段,那么该列不应该是
自动递增列
uniqueidentifier
需要一个
GUID
您应该将UserId更改为IntInt将数据类型更改为Int如果您计划通过C#代码填充该字段,则该列不应为
自动增量列

唯一标识符需要
GUID
您应该将UserId更改为Int如果您计划通过C#代码填充该字段,则该列不应为Int是自动增量列使用SQL Server Profiler查看应用程序向数据库服务器发送的确切语句可能会有所帮助。有时,这有助于您了解问题的性质和根源。@MethodMan:将此作为答案发布,因为这显然是正确的答案。@WiktorZychla感谢:)唯一标识符需要一个
GUID
如果您计划通过C#代码填充该字段,您应该将UserId改为Int将数据类型改为Int然后,该列不应是自动增量列。使用SQL Server Profiler可以准确查看从应用程序发送到数据库服务器的语句。有时这可以帮助您了解问题的性质和根源。@MethodMan:将此作为答案发布,因为这显然是正确的答案。@WiktorZychla谢谢:)我不想从C#填充它,所以我将该列设置为标识列并启用标识增量,但现在它抱怨应该打开IDENTITY_INSERT,所有在线资源都建议我在每个不理想的INSERT语句中都应该这样做,有什么建议吗?根据我的建议,我应该能够使用它为每个条目(UserID)解算唯一标识符,我必须进入我的.dbml类并将列属性更改为自动生成的Value=TrueI我不想从C#填充它,所以我将列设置为标识列并启用标识增量,但现在它抱怨应该启用标识插入,所有在线资源都建议我应该在每一个不理想的insert语句中都这样做,有什么建议吗?根据我应该能够使用它的唯一标识符来解决每个条目(UserID),我必须进入我的.dbml类并将列属性更改为Auto-Generated Value=True
DataClassesDataContext dbContext = new DataClassesDataContext();
AddingNewUsers.UserName = UserName; 
AddingNewUsers.UserPass = UserPass; 
AddingNewUsers.DOB = Convert.ToDateTime(DOB); 
AddingNewUsers.EmailAddress = Email; 
AddingNewUsers.JoiningDate = DateTime.Today; 
AddingNewUsers.Status = "Active"; 
AddingNewUsers.WalletAmount = 0;     
dbContext.UserTables.InsertOnSubmit(AddingNewUsers);
dbContext.SubmitChanges();