RavenDB 変換が正しく機能していないように見えるので、誰かが RavenDB 変換を理解するのを手伝ってくれるかどうか疑問に思っていました。Ayende の投稿に従ってみましたが、自分の状況に適用できません。UserModel と UserAddressModel の 2 つのモデルがあります。コードは次のとおりです。
public class UserModel
{
#region Properties
public string Id { get; set; }
public string AccountId { get; set; }
public string UserName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public DateTime InsertDate { get; set; }
#endregion
}
と
public class UserAddressModel
{
public string Id { get; set; }
public string AccountId { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zipcode { get; set; }
public float Latitude { get; set; }
public float Longitude { get; set; }
public DateTime InsertDate { get; set; }
}
このように RavenDB インデックスを設定しました。
public class UserDashboard_ByName : AbstractIndexCreationTask<UserModel>
{
public UserDashboard_ByName()
{
Map = users => from user in users
select new { user.UserName, user.AccountId };
TransformResults =
(database, users) => from user in users
let useraddress = database.Load<UserAddressModel>(user.AccountId)
select new
{ FirstName = user.FirstName,
LastName = user.LastName,
Address1 = useraddress.Address1,
Address2 = useraddress.Address2
};
}
}
そして、私は次のコードでそれを呼び出しています
using (var session = DataDocumentStore.Instance.OpenSession())
{
//Get the AccountId
var userDashboard =
(from user in session.Query<UserModel, UserDashboard_ByName>()
where user.UserName == userName
select user).SingleOrDefault();
}
インデックスを呼び出すと、想定している匿名型ではなく、UserModel型が返されます。また、電話のかけ方がわかりません
let useraddress = database.Load<UserAddressModel>(user.AccountId)
コードまたは他の場所で指定された特定の関係がない場合。
RavenDB でデータを結合する方法を誰かが説明してくれるでしょうか? これをよりよく理解するためのいくつかの拡張されたドキュメントまたは正しい方向へのナッジは大歓迎です。前もって感謝します。