Я пытаюсь обновить записи в OpportunitySet с помощью LINQ.Прямо сейчас я собираю все данные, и они привязываются к полям таблицы.Это то, что у меня есть:
Uri organizationUri = new Uri("http://servername/XRMServices/2011/Organization.svc");
Uri homeRealmUri = null;
ClientCredentials credentials = new ClientCredentials();
credentials.Windows.ClientCredential = new System.Net.NetworkCredential("user", "pass", "domain");
OrganizationServiceProxy orgProxy = new OrganizationServiceProxy(organizationUri, homeRealmUri, credentials, null);
// Get the IOrganizationService
IOrganizationService orgService = (IOrganizationService)orgProxy;
//Get OrganizationServiceContext -the organization service context class implements the IQueryable interface and
//a .NET Language-Integrated Query (LINQ) query provider so we can write LINQ queries against Microsoft Dynamics CRM data.
OrganizationServiceContext orgServiceContext = new OrganizationServiceContext(orgService);
var linqQuery = (from r in orgServiceContext.CreateQuery("opportunity")
join a in orgServiceContext.CreateQuery("account") on ((EntityReference)r["accountid"]).Id equals a["accountid"]
join c in orgServiceContext.CreateQuery("contact") on ((EntityReference)r["new_contact"]).Id equals c["contactid"]
where ((EntityReference)r["new_channelpartner"]).Id.Equals(new Guid("c55c2e09-a3be-e011-8b2e-00505691002b"))
select new
{
OpportunityId = !r.Contains("opportunityid") ? string.Empty : r["opportunityid"],
CustomerId = !r.Contains("customerid") ? string.Empty : ((EntityReference)r["customerid"]).Name,
Priority = !r.Contains("opportunityratingcode") ? string.Empty : r.FormattedValues["opportunityratingcode"],
ContactName = !r.Contains("new_contact") ? string.Empty : ((EntityReference)r["new_contact"]).Name,
Source = !r.Contains("new_source") ? string.Empty : r["new_source"],
CreatedOn = !r.Contains("createdon") ? string.Empty : r["createdon"],
State = !a.Contains("address1_stateorprovince") ? string.Empty : a["address1_stateorprovince"],
Zip = !a.Contains("address1_postalcode") ? string.Empty : a["address1_postalcode"],
Eval = !r.Contains("new_colderevaluation") ? string.Empty : r.FormattedValues["new_colderevaluation"],
EvalVal = !r.Contains("new_colderevaluation") ? string.Empty :((OptionSetValue)r["new_colderevaluation"]).Value.ToString(),
DistributorName = !r.Contains("new_channelpartner") ? string.Empty : ((EntityReference)r["new_channelpartner"]).Name,
ContactStreetAddress = !c.Contains("address1_line1") ? string.Empty : c["address1_line1"],
ContactCity = !c.Contains("address1_city") ? string.Empty : c["address1_city"],
ContactState = !c.Contains("address1_stateorprovince") ? string.Empty : c["address1_stateorprovince"],
ContactZip = !c.Contains("address1_postalcode") ? string.Empty : c["address1_postalcode"],
ContactPhone = !c.Contains("telephone1") ? string.Empty : c["telephone1"],
ContactMobilePhone = !c.Contains("mobilephone") ? string.Empty : c["mobilephone"],
ContactEmail = !c.Contains("emailaddress1") ? string.Empty : c["emailaddress1"],
Notes = !r.Contains("new_rsmnotes") ? string.Empty : r["new_rsmnotes"],
EstimatedCloseDate = !r.Contains("estimatedclosedate") ? string.Empty : r["estimatedclosedate"],
MaturityValue = !r.Contains("estimatedvalue") ? string.Empty : ((Money)r["estimatedvalue"]).Value.ToString()
});
grdLeadList.DataSource = linqQuery;
grdLeadList.DataBind();
Этот код записывает всю мою информацию, а затем назначает ее элементам управления, используя что-то вроде:
<asp:TestBox ID="Label1" runat="server" Text='<%# DataBinder.Eval( Container, "DataItem.ContactEmail" ) %>' />
Но сейчас я пытаюсьпоэтому, когда вы нажимаете кнопку сохранения, он сохраняет все изменения в текстовом поле.Как бы я это сделал, используя LINQ?
Спасибо!