0

Table Storage から読み取ろうとすると、次の例外が発生します。DateTime?プロパティを追加した後に取得しました。

例外:

The current value 'String.Empty' type is not compatible with the expected 'System.DateTime' type.

内部例外:

The string '' is not a valid AllXsd value.

次の解決策を考えました。

  1. プロバイダーに存在しない値を null にマップさせます
  2. オブジェクトを日付で更新します (しかし、取得できませんか?)

これを修正する方法について誰かがより良い考えを持っていますか?

スタックトレース:

System.InvalidOperationException: The current value 'String.Empty' type is not compatible with the expected 'System.DateTime' type. ---> System.FormatException: The string '' is not a valid AllXsd value.
   at System.Xml.Schema.XsdDateTime..ctor(String text, XsdDateTimeFlags kinds)
   at System.Xml.XmlConvert.ToDateTime(String s, XmlDateTimeSerializationMode dateTimeOption)
   at System.Data.Services.Client.ClientConvert.ChangeType(String propertyValue, Type propertyType)
   --- End of inner exception stack trace ---
   at System.Data.Services.Client.ClientConvert.ChangeType(String propertyValue, Type propertyType)
   at System.Data.Services.Client.AtomMaterializer.MaterializeDataValue(Type type, AtomContentProperty atomProperty, DataServiceContext context)
   at System.Data.Services.Client.AtomMaterializer.MaterializeDataValues(ClientType actualType, List`1 values, Boolean ignoreMissingProperties, DataServiceContext context)
   at System.Data.Services.Client.AtomMaterializer.MaterializeResolvedEntry(AtomEntry entry, Boolean includeLinks)
   at System.Data.Services.Client.AtomMaterializer.Materialize(AtomEntry entry, Type expectedEntryType, Boolean includeLinks)
   at System.Data.Services.Client.AtomMaterializer.DirectMaterializePlan(AtomMaterializer materializer, AtomEntry entry, Type expectedEntryType)
   at System.Data.Services.Client.AtomMaterializerInvoker.DirectMaterializePlan(Object materializer, Object entry, Type expectedEntryType)
   at System.Data.Services.Client.ProjectionPlan.Run(AtomMaterializer materializer, AtomEntry entry, Type expectedType)
   at System.Data.Services.Client.AtomMaterializer.Read()
   at System.Data.Services.Client.MaterializeAtom.MoveNextInternal()
   at System.Data.Services.Client.MaterializeAtom.MoveNext()
   at System.Linq.Enumerable.<CastIterator>d__b1`1.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)

モデル

class Car : TableServiceEntity {

 public DateTime? LastUpdated { get; set; }
 public DateTime? LastUsed { get; set; }

// more properties

}

クエリ

 var sx = this.GetServiceContext();
 return (from x in sx.CreateQuery<Car>("Table") select x).ToList();
4

1 に答える 1

0

誰かがグーグルで検索した場合、解決策を見つけました:

Azure Storage Explorer を使用していますが、テスト中に別のプロパティを更新したときに、エンティティの 1 つに null 許容日付ではなく空の文字列が保存されました。

于 2012-06-29T15:01:32.680 に答える