Отображение более двух таблиц с использованием Entity Framework - PullRequest
0 голосов
/ 21 ноября 2011

Я рассматривал использование EF для проекта, который я начну в ближайшие недели.

У меня есть три таблицы в ранее созданной базе данных.(см. прилагаемое изображение) EDMX

При создании записи CompanyNotice необходимо добавить хотя бы одно Местоположение (из таблицы Locations) в таблицу CompanyNoticeLocations.

например,

**CompanyNotice**
ID  CompanyID Date                      Heading Text   .....
2   9         2011-11-21 10:17:29.573   Lorem   Ipsum   1   1   1

**CompanyNoticeLocations**
CompanyNoticeLocationsID CompanyNoticeID LocationID
1                        2               4
2                        2               5
3                        2               1

Основной вопрос: Может кто-нибудь сказать, могу ли я использовать EF для создания сущности с именем CompanyNoticesWithLocations, которая просто возвращает:

  • Заголовок
  • Текст
  • Список LocationNames

Подвопрос: Я пытался сделать это с помощью LINQ без отображения нескольких таблиц в сущности и не смог получитьчтобы это работало либо:

using (var context = new ALEntities())
                {
                    var query = from c in context.CompanyNotices.Include("Locations")
                                select new 
                                { 
                                    c.CompanyNoticeHeading, 
                                    c.CompanyNoticeText,
                                    (from l in c.CompanyNoticesLocations select l.Location.LocationName)
                                };
                    ASPxGridView1.DataSource = query;
                    ASPxGridView1.DataBind();



                }

Однако я получаю ошибку:

Недопустимый декларатор члена анонимного типа.Члены анонимного типа должны быть объявлены с назначением члена, простым именем или доступом участника.

Ответы [ 2 ]

1 голос
/ 22 ноября 2011

Ваша таблица CompanyNoticesLocation не обязательно должна существовать как отдельная сущность в модели.Это должно быть представлено как ассоциация «многие ко многим» между CompanyNotice и Location.Пока ассоциация настроена правильно, EF будет сопоставлять это с вашей базовой таблицей соединений, которую вы сможете увидеть в окне Mapping.

Вот пример отображения многих на многие из одного из моих собственныхмодели, отображающие сопоставление сопоставления с базовой таблицей соединений под названием CandidateAnswer:

enter image description here

1 голос
/ 21 ноября 2011

это работает для меня

var query = from c in context.CompanyNotices.Include("Locations") 
                                select new  
                                {  
                                    c.CompanyNoticeHeading,  
                                    c.CompanyNoticeText, 
                                    locations = (from l in c.CompanyNoticesLocations select l.Location.LocationName) 
                            }; 

где в локациях будет указано название вашего анонимного типа недвижимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...