RavenDBの変換を正しく理解しているように見える人がいたら、 Ayende's postに従ってみましたが、私の状況には適用できません。私はUserModelとUserAddressModelという2つのモデルを持っています。RavenDBの変換と単純なデータの結合
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のデータをどのように参加させるべきか説明できますか?いくつかの拡張されたドキュメントやこれをより良く理解するための正しい方向のナッジは、非常に高く評価されます。前もって感謝します。あなたが戻りたい4つのプロパティを含むようUserWithAddressModelなど
あなたは(基本的にビューモデル)別のモデルを作成する必要があり
System.Linqエラーが発生します。IQueryableに 'As'の定義が含まれていません。助言がありますか? –
jamesamuir