MVVMデザインのWPFアプリケーションでこの問題を解決しようとしました。 私はより多くの「データ」データベースアクセスに返す必要があります。戻り値IResult <T>
- 結果メッセージ
- 戻り値
- と場合は、だから私は、戻り値の型のためのインターフェイスを作成、ここにある
データベース成功しました:
public interface IResult<T>
{
bool IsSuccess { get; set; }
string ResultMessage { get; set; }
T ReturnValue { get; set; }
}
このインタフェースは、いくつかのクラスを実装しています
public class DbResult: IResult<IList<Archive>>
{
public bool IsSuccess{ get; set;}
public string ResultMessage{ get; set;}
public IList<Archive> ReturnValue { get; set; }
}
データベースへのアクセスのクラスのメソッドは、戻り値の型IResult<Archive>
を持って、アーカイブ
public interface IArchiveDbManager
{
IResult<Archive> LoadConversationTo(string nick, DateTime toDt);
}
[Export(typeof(IArchiveDbManager))]
public partial class ArchiveDbManager : IArchiveDbManager
{
public IResult<Archive> LoadConversationTo(string nick, DateTime toDt)
{
var result = new DbResult();
try
{
var query = from m in _dc.Archive
where m.Nick == nick
where m.Time <= toDt
orderby m.Time
select m;
result.ReturnValue = query.ToList();
if (query.Count() == 0)
{
result.ResultMessage = "For the specified search criteria found no record in the database.";
result.IsSuccess = false;
}
else
{
result.ResultMessage =
string.Format("For the specified search criteria found {0} record in the database.", query.Count());
result.IsSuccess = true;
}
return result;
}
catch (Exception exception)
{
throw exception;
}
}
}
クラスArchiveDbManager .: LINQ to SQLはして生成されたクラスでは、ビューモデルクラスでMEFを注入しています。
私はいくつか質問があります。
MVVMでこの 問題の正しい解決策は何を?シナリオビュー モデルは、データベース テーブルが空の場合、ArchiveDbManager クラスのリターン・メッセージとビューモデル「アーカイブ 空である」とは、例えば、 データベースへ ArchiveDbManagerアクセスによって作成され、ユーザーへの表示で、この メッセージが表示されます。
「ArchiveDbManagerクラス(それがデータベースへのアクセスに クラスである)」
は、あなたがこの ソリューションについてどう思いますか? で、データベース内の 検索結果のレポートを作成するために右でありますか
なぜセッターですか?不変の 'IResult'はうまくいかないでしょうか? –
CodesInChaos