Je reçois un message d'erreur de comparaison lorsque j'essaie de mettre à jour un enregistrement à l'aide de LINQ.Erreur de comparaison LINQ
var tools = from tl in MVCWebsite.MvcApplication.DataContext.tblTools
where tl.pk_fk_Environment == model.Environment
&& tl.pk_fk_Classification == model.Classification
&& tl.pk_ToolNumber == model.ToolNumber
select tl;
Models.Database.tblTool updatingTool = tools.First();
//try
//{
if (createPerson(model.ToolEngineer, true) != null)
updatingTool.fk_Engineer = model.ToolEngineer;
else
updatingTool.fk_Engineer = null;
updatingTool.fk_BuiltBy = model.ToolBuiltBy;
if (createPerson(model.ToolBuiltBy, true) != null)
updatingTool.fk_BuiltBy = model.ToolBuiltBy;
else
updatingTool.fk_BuiltBy = null;
if (createPerson(model.ToolDesignedBy, true) != null)
updatingTool.fk_Designer = model.ToolDesignedBy;
else
updatingTool.fk_Designer = null;
updatingTool.DateOfBuild = model.DateOfBuild;
updatingTool.Machine_Name_Primary = model.ToolPrimaryMachineName;
updatingTool.Machine_Description_Primary = model.ToolPrimaryMachineDescription;
updatingTool.Machine_Name_Secondary = model.ToolSecondaryMachineName;
updatingTool.Machine_Description_Secondary = model.ToolSecondaryMachineDescription;
updatingTool.MERNumber = model.MERNumber;
updatingTool.AssetNumber = model.AssetNumber;
updatingTool.Additional_Cavities = model.AdditionalFields.Cavities;
updatingTool.Additional_Gate = model.AdditionalFields.TypeOfGate;
updatingTool.Additional_Shrinkage = model.AdditionalFields.Shrinkage;
updatingTool.Additional_DieClearance = model.AdditionalFields.DieClearance;
updatingTool.Additional_Field1 = model.AdditionalFields.Additional1;
updatingTool.Additional_Field2 = model.AdditionalFields.Additional2;
updatingTool.Additional_Field3 = model.AdditionalFields.Additional3;
updatingTool.Additional_Field4 = model.AdditionalFields.Additional4;
updatingTool.Additional_OtherInformation = model.AdditionalFields.OtherInformation;
(Ci-dessous la fonction de création de l'utilisateur)
private Models.Database.tblPerson createPerson(string user)
{
if (user == null || user == "")
return null;
var people = from p in MVCWebsite.MvcApplication.DataContext.tblPersons
where p.pk_PersonID == user
select p;
if (people.Count() == 1)
{
return people.First();
}
else
{
Models.UserInformation ui;
ui = MVCWebsite.MvcApplication.DisplayUser(user);
if (!ui.Exists)
return null;
tblPerson person = new tblPerson()
{
pk_PersonID = user,
FirstName = ui.GivenName,
LastName = ui.Surname,
Email = ui.EmailAddress
};
return person;
}
}
Je ne suis pas tracassé au sujet si mon code est propre ou non au moment, je suis juste reçois cette erreur et il commence à agacer moi.
Voici le tableau principal scriptée comme Crées (Vous pouvez voir les paramètres de champ:
CREATE TABLE [dbo].[tblTool](
[pk_fk_Environment] [varchar](2) COLLATE Latin1_General_CI_AS NOT NULL,
[pk_fk_Classification] [varchar](3) COLLATE Latin1_General_CI_AS NOT NULL,
[pk_fk_Style] [varchar](4) COLLATE Latin1_General_CI_AS NULL,
[pk_ToolNumber] [int] NOT NULL,
[DateOfBuild] [datetime] NULL,
[fk_Engineer] [varchar](50) COLLATE Latin1_General_CI_AS NULL,
[fk_Designer] [varchar](50) COLLATE Latin1_General_CI_AS NULL,
[fk_BuiltBy] [varchar](20) COLLATE Latin1_General_CI_AS NULL,
[MERNumber] [varchar](50) COLLATE Latin1_General_CI_AS NULL,
[AssetNumber] [varchar](50) COLLATE Latin1_General_CI_AS NULL,
[fk_Material] [varchar](50) COLLATE Latin1_General_CI_AS NULL,
[fk_LocationCompany] [varchar](20) COLLATE Latin1_General_CI_AS NULL,
[fk_LocationCountry] [varchar](50) COLLATE Latin1_General_CI_AS NULL,
[fk_LocationRegion] [varchar](50) COLLATE Latin1_General_CI_AS NULL,
[fk_Status] [varchar](10) COLLATE Latin1_General_CI_AS NULL,
[Machine_Name_Primary] [varchar](50) COLLATE Latin1_General_CI_AS NULL,
[Machine_Description_Primary] [text] COLLATE Latin1_General_CI_AS NULL,
[Machine_Name_Secondary] [varchar](50) COLLATE Latin1_General_CI_AS NULL,
[Machine_Description_Secondary] [text] COLLATE Latin1_General_CI_AS NULL,
[OldToolID] [varchar](100) COLLATE Latin1_General_CI_AS NULL,
[Additional_Cavities] [varchar](50) COLLATE Latin1_General_CI_AS NULL,
[Additional_Gate] [varchar](50) COLLATE Latin1_General_CI_AS NULL,
[Additional_Shrinkage] [varchar](50) COLLATE Latin1_General_CI_AS NULL,
[Additional_DieClearance] [varchar](50) COLLATE Latin1_General_CI_AS NULL,
[Additional_Field1] [varchar](50) COLLATE Latin1_General_CI_AS NULL,
[Additional_Field2] [varchar](50) COLLATE Latin1_General_CI_AS NULL,
[Additional_Field3] [varchar](50) COLLATE Latin1_General_CI_AS NULL,
[Additional_Field4] [varchar](50) COLLATE Latin1_General_CI_AS NULL,
[Additional_OtherInformation] [text] COLLATE Latin1_General_CI_AS NULL,
CONSTRAINT [PK_tblTool] PRIMARY KEY CLUSTERED
(
[pk_fk_Environment] ASC,
[pk_fk_Classification] ASC,
[pk_ToolNumber] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
Lors de la mise à jour sur le terrain avec les mêmes informations qui est déjà dans ce que je reçois l'erreur:
SQL Server does not handle comparison of NText, Text, Xml, or Image data types.
Quelqu'un sait-il pourquoi cela pourrait se produire?
Merci, Oliver
'Je ne suis pas dérangé si mon code est propre ou pas en ce moment 'Mais vous attendez que nous le lisions –
C'est votre choix si vous voulez m'aider ou non. Mon code commence généralement désordonné et à la fin de ces sections le développement est nettoyé pour avoir l'air propre et mieux préformer. Tout ce que je veux dire par là, c'est que je ne voulais pas que les gens perdent leur temps à nettoyer mon code pour moi. En outre, mon code peut être un peu long, mais ce n'est pas "que" désordonné. À la fin de la journée, ne vous embêtez pas à poster quelque chose qui n'est pas contributif. J'ai dû lire le code beaucoup plus désordonné que cela auparavant. –
@OliverBaker: Votre code était très bien. Je pouvais comprendre tout ce dont j'avais besoin en le regardant pendant moins d'une minute. –