Entity Framework (QueryBuilder) - где префикс предложения "it" - PullRequest
4 голосов
/ 13 марта 2012

Недавно я наткнулся на следующий синтаксис Entity Framework.Обратите внимание на предложение where -

.Where("it.LastName = @ln AND it.FirstName = @fn")

Что делает it.?И почему it вместо Contacts.LastName?Любая подробная информация будет полезна.Заранее спасибо.

string firstName = @"Frances";
string lastName = @"Adams";

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    // Get the contacts with the specified name.
    ObjectQuery<Contact> contactQuery = context.Contacts
        .Where("it.LastName = @ln AND it.FirstName = @fn",
        new ObjectParameter("ln", lastName),
        new ObjectParameter("fn", firstName));

    // Iterate through the collection of Contact items.
    foreach (Contact result in contactQuery)
        Console.WriteLine("Last Name: {0}; First Name: {1}",
        result.LastName, result.FirstName);
}

1 Ответ

5 голосов
/ 13 марта 2012

На основании этой статьи"it" ссылается на ObjectQuery как имя по умолчанию для ссылки на параметры.Используя свойство Name объекта ObjectQuery, вы можете изменить его так, чтобы в вашем предложении where на него можно было ссылаться как на любое имя, которым вы хотите, чтобы оно было:

ObjectQuery<Contact> contactQuery;
contactQuery.Name = "contact";
contactQuery = context.Contacts
  .Where("contact.LastName = @ln AND contact.FirstName = @fn",
   new ObjectParameter("ln", lastName),
   new ObjectParameter("fn", firstName));  

Возможно, не совсем так, как показано выше,но это дает общее представление.

...