Caliburn.Micro를 사용하여 Silverlight 5 응용 프로그램을 개발 중입니다. 프레임 워크에서 SQL 테이블에서 일부 데이터를 읽어야합니다. 나는 WCF 데이터 서비스 (이유는 요점이다)를 선택했다.DataServiceQuery를 추가/변경하십시오.
일반적인 것을 만들고 재사용하기 위해 서비스의 DataServiceQuery<TEntity>
과 URI
을 가져 와서 데이터를로드하는 뷰 모델을 만들었습니다. 또한 데이터를 표시하는 데 RadelridView를 사용하고 자식 창에 뷰 모델을 표시하는 Caliburn IResult를 사용하여이 뷰 모델에 대한 뷰를 만들었습니다. 내 응용 프로그램에서 사용자가 큰 목록 (SQL 테이블)에서 무언가를 선택해야하는 필드가있는 많은 양식을 가지고 있으므로 테이블에서 항목을 선택해야 할 때마다이보기 모델과보기를 사용하고 싶습니다.
public class SelectDBEntitiesViewModel<TEntity, TContext> : DialogScreenBase, IAmClean
where TEntity : class, new()
where TContext : DataServiceContext
{
public SelectDBEntitiesViewModel()
{
}
public void Load()
{
// load
}
public DataServiceQuery<TEntity> Query{ get; set; }
public void Filter()
{
Query = _originalQuery.AddQueryOption("$filter", "startswith(" + _filterProperty + ",'" + FilterValue + "')");
Load();
}
}
그래서 코 루틴에서 다른 뷰 모델에서 I는 다음과 같이이 IResult 클래스를 만들 :이 방법은 자식 창 열기, 뷰 모델이로드 데이터와이 실행
public IEnumerable<IResult> SelectInternalBeneficiary()
{
SelectDBEntitiesResult<InternalBeneficiary, QMSEntities> r = new SelectDBEntitiesResult<InternalBeneficiary, QMSEntities>(_oDataUri);
r.Query = (from ib in r.DataContext.InternalBeneficiaries where (ib.Firma == Model.GroupCompany) select ib) as DataServiceQuery<InternalBeneficiary>; r.PageSize = 2;
r.ColumnSettingsName = UserSettings.SEL_INTERNALBENEFICIARIES_GRID;
r.Header = "SELECT AN INTERNAL BENEFICIARY";
r.Subtitle = "List of all departments";
yield return r;
Model.InternalBeneficiary = r.SelectedObject.DenumireDepartament;
}
그래서 때 그리드가로드됩니다.
모든 것이 현재 정상적으로 작동하지만보기에는 쿼리에 새로운 절을 추가하여 데이터를 필터링하는 데 사용할 오른쪽 위 모서리에있는 텍스트 상자가 있습니다. 이것은 내 일반 SelectDBEntitiesViewModel
내부에서해야하지만 문제는이 뷰 모델이 사용하는 쿼리가 외부에서 매개 변수로 수신된다는 것입니다.
Query = _originalQuery.AddQueryOption("$filter", "startswith(" + _filterProperty + ",'" + FilterValue + "')");
을하지만 응용 프로그램을 실행할 때 나는 물론이 오류를 얻을 : 나는 필터 방식으로 다음과 같은 시도
Can't add query option '$filter' because it would conflict with the query options from the translated Linq expression.
내가 무슨 일이 일어나고 있는지 이해를 (이미 where 절을 쿼리에서 및 다른 필터를 추가 할 수 없습니다)하지만 난 그것을 해결하는 방법을 모르겠습니다.
아이디어가 있으십니까?