データベース モデルの上にモデルがあり、オブジェクトをリポジトリにマップします。
ただし、GetUsers で直接「新規を選択」するか、以下に実装するように「factoryresult を選択」するかは明らかに違いがあります。実行時に、メソッド CreateFromDbModel に sql への変換がないというエラーが表示されます (System.NotSupportedException)。
これを回避する方法はありますか?どうにか直すことはできますか?
ファクトリ メソッドを使用する理由は、オブジェクトを別の場所でインスタンス化し、「マッピング コード」を 1 か所に保持したいからです...
コメントありがとう、アンダース
public IQueryable<User> GetUsers(bool includeTeams)
{
return from u in _db.sc_Players
where (includeTeams || (!u.aspnet_User.sc_Player.IsTeam))
select UserFactory2.CreateFromDbModel(u);
}
public static User CreateFromDbModel(sc_Player player)
{
return new User
{
Id = player.sc_PlayerID,
FirstName = player.FirstName.Trim(),
LastName = player.LastName.Trim(),
PresentationName = player.FirstName.Trim() + " " + player.LastName.Trim(),
LoginName = player.aspnet_User.LoweredUserName,
IsTeam = player.IsTeam,
Email = player.aspnet_User.aspnet_Membership.Email,
Password = player.aspnet_User.aspnet_Membership.Password
};
}