我正在使用实体框架并更新了一个表及其存储过程,但是在调用存储过程时出现以下错误.
数据读取器与指定的"FormValueModel.Valuation"不兼容.类型为"ValuationId"的成员在数据读取器中没有具有相同名称的相应列.
ValuationId是我想要自动增加的主键.
我可以从SQL管理工作室执行存储过程查找,当我运行我的应用程序时,它会写入数据库,但随后会出现错误消息.
我不熟悉实体框架,只是有基础,我认为它可能是model.edmx的映射问题.
在模型中重新创建和映射表和存储过程的正确过程是什么?
存储过程.
ALTER PROCEDURE [dbo].[ValuationCreate]
@TrackingNumber varchar(100),
@FormMobiValuationId varchar(100),
@ValuationPropertyId int,
@ValuationFileName varchar(50)
AS
SET NOCOUNT ON
SET XACT_ABORT ON
DECLARE @ErrorMessage varchar(1000)
BEGIN TRANSACTION
--Insert to Valuation
INSERT INTO [Valuation]
(
TrackingNumber,
FormMobiValuationId,
ValuationPropertyId, -- new
ValuationFileName,
Date,
ValuationStatus,
IsActive
)
VALUES
(
@TrackingNumber,
@FormMobiValuationId,
@ValuationPropertyId,--new
@ValuationFileName,
GETDATE(),
1, --Created
1
)
IF @@ERROR > 0
BEGIN
SET @ErrorMessage = 'Valuation Insert failed'
GOTO ErrorHandler
END
ELSE
BEGIN
COMMIT TRANSACTION
RETURN
END
ErrorHandler:
RAISERROR(@ErrorMessage,16,1); …Run Code Online (Sandbox Code Playgroud) 我不断收到以下异常。例外使我感到困惑,因为我没有选择UserID。
我尝试将选择更改为,SELECT *但这只会导致a result.Count为0,无论数据是否存在。
我在数据库中有一个虚拟记录,称为bob tob。
我注意到,如果将鼠标悬停在的用户部分上db.Users.SqlQuery。
里面的文字是
{SELECT
[Extent1].[userID] AS [userID],
[Extent1].[userFirstName] AS [userFirstName],
[Extent1].[userLastName] AS [userLastName],
[Extent1].[userName] AS [userName],
[Extent1].[userEmail] AS [userEmail],
[Extent1].[userPassword] AS [userPassword],
[Extent1].[userStatus] AS [userStatus],
[Extent1].[userEmailVerificationStatus] AS [userEmailVerificationStatus],
[Extent1].[userActivationCode] AS [userActivationCode]
FROM [dbo].[Users] AS [Extent1]}
Run Code Online (Sandbox Code Playgroud)
我猜它正在尝试选择所有User类项,无论如何?如果是这样,那我该如何制止呢?我想念什么?
这是例外:
数据读取器与指定的“ UserRegistrationPasswordsModel.User”不兼容。类型“ userID”的成员在数据读取器中没有具有相同名称的对应列。
下面是调用的代码EmailExists。我ToString()错误地希望这可能是问题所在。
#region EmailExist
// Email already exists?
if (Utilities.EmailExists(user.userEmail.ToString()))
{
// A pretty awesome way to make a custom exception
ModelState.AddModelError("EmailExist", "Email already exists"); …Run Code Online (Sandbox Code Playgroud)