DataPortal_Fetch Overload causes Ambiguous Error in 3.5 Beta 2DataPortal_Fetch Overload causes Ambiguous Error in 3.5 Beta 2
Old forum URL: forums.lhotka.net/forums/t/4428.aspx
colema18 posted on Wednesday, February 27, 2008
This might be a bug, but I am thinking it is most likely my implementation/design. I have a businessbase object that I want to be able to fetch on by Guid or by Name. The problem with this however is that overloading DataPortal_Fetch with wanting a SingleCriteria<DealerGroup, string> or SingleCriteria<DealerGroup, guid> causes an error:
Error:
Csla.Server.CallMethodException: DataPortal_Fetch method call failed ---> System.Reflection.AmbiguousMatchException: Ambiguous match found..
Code:
//FACTORY METHODS
public static DealerGroup GetDealerGroup(Guid id)
{
if (!(CanGetObject()))
throw new System.Security.SecurityException("User not authorized to view a dealer group");
return DataPortal.Fetch<DealerGroup>(new SingleFieldCriteria<DealerGroup, Guid>(id,SingleCriteriaFieldName.Id));
}
public static DealerGroup GetDealerGroup(string name)
{
if (!(CanGetObject()))
throw new System.Security.SecurityException("User not authorized to view a dealer group");
return DataPortal.Fetch<DealerGroup>(new SingleFieldCriteria<DealerGroup, string>(name, SingleCriteriaFieldName.Name));
}
private void DataPortal_Fetch(SingleFieldCriteria<DealerGroup, Guid> criteria)
{
using (var ctx = ContextManager<FinanceSource.DalLinq.UserDataContext>.GetManager(Database.FinanceSourceConnection))
{
var data = (from d in ctx.DataContext.DealerGroups
where d.Id == (Guid)criteria.Value
select d).Single();
LoadProperties(data);
}
}
//DATA ACCESS METHODS
private void DataPortal_Fetch(SingleFieldCriteria<DealerGroup, String> criteria)
{
using (var ctx = ContextManager<FinanceSource.DalLinq.UserDataContext>.GetManager(Database.FinanceSourceConnection))
{
FinanceSource.DalLinq.DealerGroup data = null;
switch (criteria.FieldName)
{
case SingleCriteriaFieldName.Name:
data = (from d in ctx.DataContext.DealerGroups
where d.Name == (String)criteria.Value
select d).Single();
break;
default:
break;
}
LoadProperties(data);
}
}
Copyright (c) Marimer LLC