Я хочу изменить все мои запросы с QueryExpression на Linq.Во время разработки все, кажется, просто отлично, но я всегда получаю исключение приведения во время выполнения (не могу привести Microsoft.xrm.sdk.entity к Xrm.SystemUser -> Xrm - классы с ранней привязкой, созданные с помощью CrmSvcUtil).
var context = new OrganizationServiceContext(crmService);
SystemUser x = (from c in context.CreateQuery<SystemUser>()
where c.DomainName == @"pfgc\" + Environment.UserName
select c).FirstOrDefault();
Этот код прост.Я даже пытался без предложения Where, и это ничего не изменит.
Я попробовал следующее (без FirstOrDefault и var вместо SystemUser)
var x = (from c in context.CreateQuery<SystemUser>()
where c.DomainName == @"pfgc\" + Environment.UserName
select c);
Это не сгенерируетисключение, но тип x - это Microsoft.xrm.sdk.linq.Query.Что я делаю неправильно?Кажется, именно это и предлагает SDK.
РЕДАКТИРОВАТЬ:
GCATNM имеет правильный ответ.Если кто-то сталкивается с той же проблемой, вот пример рабочего кода:
public SystemUser GetCurrentUser()
{
var context = GetOrgContext();
return (from c in context.CreateQuery<SystemUser>()
where c.DomainName == @"pfgc\" + Environment.UserName
select c).FirstOrDefault();
}
public OrganizationServiceContext GetOrgContext()
{
var serviceProxy1 = new OrganizationServiceProxy(organizationUri, homeRealmUri, credentials, null);
serviceProxy1.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior());
return new OrganizationServiceContext(serviceProxy1);
}