2012-03-13 2 views
4

Недавно я натолкнулся на следующий синтаксис Entity Framework. Обратите внимание на то, что пункт -Entity Framework (QueryBuilder) - где префикс предложения «это»

.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); 
} 
+0

Мне никогда не приходилось приписывать мне, где предложения с «этим» .... – c0deNinja

+0

какая версия EF? – c0deNinja

+0

EF 4 - вот статья msdn - http://msdn.microsoft.com/en-us/library/bb896238.aspx – bugBurger

ответ

5

на основе this article, «он» относится к ObjectQuery как имя по умолчанию будет ссылающихся параметры. Используя Имя свойства ObjectQuery вы можете изменить его так, что в вашем где положение его можно ссылаться как на то, что имя, которое вы хотите, чтобы это было:

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)); 

Вероятно, не совсем нравится то, что показано выше, но дает общую идею.

+0

Спасибо за красивое объяснение и справочную статью. – bugBurger

+0

Когда я увидел этот вопрос, я был похож на whoa, я знаю, что видел его раньше, но у меня не было понятия, что это значит. Ваш вопрос дал мне повод, чтобы понять это лучше. – ShelbyZ

Смежные вопросы