1

この文書クラスが与えられた場合:

public class Tea
{
   public String Id { get; set; }

   public String Name { get; set; }

   public TeaType Type { get; set; }

   public Double WaterTemp { get; set; }

   public Int32 SleepTime { get; set; }
}

public enum TeaType
{
    Black,
    Green,
    Yellow,
    Oolong
}

次のコードで新しい Tea を保存します。

using (var ds = new DocumentStore { Url = "http://localhost:8080/" }.Initialize())
using (var session = ds.OpenSession("RavenDBFirstSteps"))
{
    Tea tea = new Tea() { Name = "Earl Grey", Type = TeaType.Black, WaterTemp = 99d, SleepTime = 3 };
    session.Store(tea);
    session.SaveChanges();
    Console.WriteLine(tea.Id);
}

お茶は正常に保存されますが、linq ですべての紅茶をクエリしようとすると、結果が得られません。

using (var ds = new DocumentStore { Url = "http://localhost:8080/" }.Initialize())
using (var session = ds.OpenSession("RavenDBFirstSteps"))
{
    var dbTeas = from teas in session.Query<Tea>()
                    where teas.Type == TeaType.Black
                    select teas;

    foreach (var dbTea in dbTeas)
    {
        Console.WriteLine(dbTea.Id + ": " + dbTea.Name);
    }
}

次のコマンドを使用して、列挙型を整数として保存しようとしました。

ds.Conventions.SaveEnumsAsIntegers = true;

しかし、結果は同じです。Name または WaterTemp を使用すると、すべて機能します。RavenDB はこのように列挙型をサポートしていますか、それとも完全に間違っていますか?

4

1 に答える 1

1

答えが出たようです。予約済みのキーワードであるTypeのような名前のプロパティを使用することは常に推奨されません。

Typeの名前を変更すると、すべてが機能するので、答えは次のとおりです。

public class Tea
{
   public String Id { get; set; }

   public String Name { get; set; }

   public TeaType TeaType { get; set; }

   public Double WaterTemp { get; set; }

   public Int32 SleepTime { get; set; }
}
于 2013-03-02T15:11:28.293 に答える