2015-09-23 4 views
4

В базе данных моей У меня есть таблица с именем «Сайт», который содержит столбец «Сайт» (пожалуйста, не спрашивайте, почему :))Entity Framework базы данных, такой же таблицы и имя столбца отображение

Я использую первый подход к базе данных. После обновления модели из базы данных У меня есть объект «Site» со свойством «site1»

public partial class Site 
{ 
    ... 
    public string Site1 { get; set; } 
    ... 
} 

Это прекрасно работает, пока не начало использование метода SQLQuery с простым выбором:

context.Site.SqlQuery("SELECT * FROM dbo.Site WHERE SiteID IN(2,1)").ToArray(); 

В результате этого I получить ошибку: «Устройство чтения данных несовместимо с указанным« aapModel.Site ». Элемент типа «Site1» не имеет соответствующего столбца в считывателе данных с тем же именем ».

Я нашел одно решение, чтобы изменить имя столбца в запросе:

context.Site.SqlQuery("SELECT Site as Site1 FROM dbo.Site WHERE SiteID IN(2,1)").ToArray(); 

Но это не гибкий и элегантный. Есть ли способ сказать структуру сущности не изменять имена столбцов при генерации модели из базы данных?

+0

Попробуйте изменить имя вручную: http://stackoverflow.com/questions/20780489/ef-database-first-rename-entity-table-name –

+0

К сожалению: имя Сайта не может быть дублировано в этом контексте. Выберите другое имя. – Mikhail

+0

Я думаю, что нет никакого способа сделать это. При использовании SqlQuery вы должны знать имя свойства (в типе сущности) и имя столбца (в таблице базы данных). Вот почему нам редко приходится использовать SqlQuery. – Hopeless

ответ

0

попробовать что-то вроде этого:

public partial class Site 
{ 
    [Column("Site1")] 
    public string Site1 { get; set; } 

} 

Я заметил, что ваш класс является частичным, ваш, что вы не имеете отображение класса модели объекта?