J'ai une colonne XML typée dans laquelle je stocke la sérialisation à partir d'un objet C# avec une propriété DateTime. Que dateTime est de type local lorsque je le stocke dans la base de données - bien que le fichier XML sérialisé affiche l'heure avec un décalage à l'heure GT, comme dans '2009-09-22T13: 52: 32.2346252-07: 00' (j'habite dans Oregon). Lorsque je lis la table (à partir de SQL Management Studio), le fichier XML affiche l'objet DateTime dans le type UTC. Existe-t-il un moyen de contrôler ce comportement? Il est important pour moi de respecter le fuseau horaire des données que je mets, car cela peut provenir de différentes sources, et je dois respecter cela lorsque je le retire. Je ne veux pas non plus convertir chaque champ de date UTC en local après avoir lu les objets de la base de données.Colonne XML typée avec l'élément DateTime - DateTime est convertie
c'est la définition C# de l'objet I magasin:
[Serializable]
[XmlType(Namespace="urn://MySchema")]
public class MyObject
{
public DateTime RecordTime { get; set; }
// .. omitted for clarity
}
Telle est la définition de la table (simplifiée pour plus de clarté)
CREATE TABLE MyTable(
[ID] [int] IDENTITY(1,1) NOT NULL,
[MyKey] [int] NULL,
[TheObject] [xml](CONTENT [dbo].[MySchema]) NULL,
CONSTRAINT [PK_MyTable] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Voici comment mon sproc ressemble (aussi simplifiée)
ALTER PROCEDURE [dbo].[SaveMyObjects]
@where int,
@object xml
AS
BEGIN
INSERT INTO MyTable
(MyKey, TheObject)
VALUES(@where, @object)
END
je dois faire 2 choses différemment:
- Je veux contrôler le format de la chaîne de date dans le fichier XML sérialisé - Je préfère un format ISO pour cette chaîne de temps
- Je ne veux pas DateTime être converti en UTC quand I Stockez-le dans la base de données, mais j'aimerais le garder en tant que champ DateTime .
Comment faire cela? Toute idée, pointeur, lien vers le blog d'un dieu montrant mes erreurs, etc. serait très apprécié.
Pas dans ce cas. Voir mon commentaire à moose ci-dessus –