2013-03-01 1 views
0

Что такое LINQ, эквивалентная следующей инструкции SQL? Сначала я использую сущность framework 5, базу данных.Как запросить sysobjects с linq?

SELECT Name 
FROM SysObjects 
WHERE xtype='U' AND Name LIKE 'D[_]%' 
ORDER BY Name ASC 
+1

Что бы это было? – Legion

ответ

2

Вы можете сделать это с помощью LINQ, но только если вы карту SysObjects в свой класс, в противном случае это не было бы возможно любой другой путь.

Например:

public class SysObject 
{ 
    public int SomeUniqueId { get; set; } 
    public string Name { get; set; } 
} 

Файл отображения будет, как это (я использую Code Первый подход, как вы не заявляли, как вы используете EF)

public class SysObjectMap : EntityTypeConfiguration<SysObject> 
{ 
    HasKey(p => p.SomeUniqueId); 

    Property(p => p.Name).IsRequired(); 

    ToTable("SysObjects"); // If there is Schema pass it as a 2nd argument 
    Property(p => p.Name).HasColumnName("name"); 
} 

Вы должны зарегистрируйте это сопоставление в своем контексте. Конечно, если вы используете подход Database First, это может смутить вас, поскольку сгенерированный код Visual Studio значительно изменится.

UPDATE: В случае подхода Database-First я уверен, что вы сможете увидеть системные таблицы. Конечно, вы всегда можете открыть сгенерированный класс EDMX и реализацию и добавить отображение самостоятельно. Другим подходом было бы создание представления, которое обтекает SysObjects. Затем используйте конструктор моделей, чтобы добавить View.

+0

Неплохо, это база данных. – Legion