我尝试使用MVVM设计在WPF应用中解决此问题。 我需要在数据库访问上返回更多“数据”:
所以我为返回类型创建了接口,这里是:
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>
,Archive是使用LINQ TO SQL生成的类。:
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在视图模型类中注入了MEF。
我有一些问题:
对此有何正确解决方法 MVVM中的问题?场景是视图 模型创造通过 ArchiveDbManager访问了 数据库,例如数据库 表是空的,ArchiveDbManager 类返回消息“存档是 空“和视图模型显示这个 用户可以看到的消息。
创建报告是正确的 搜索结果在数据库中 “ArchiveDbManager类(它是一个 数据库访问类)“
您如何看待这一点 溶液
答案 0 :(得分:0)
保持简单:你真的不需要界面或类。
您只需要询问结果,并且该方法应抛出异常,错误消息出错。
这种成功结果消息:result.ResultMessage = "For the specified search criteria found no record in the database.";
不属于业务逻辑或数据层。 UI层应负责向用户显示消息。