2013-02-18 2 views
2

У меня есть база данных с 2 классами, и у меня есть одна-две отношения. Это устанавливается как магазин (основной класс я бег моего кода против, который вступил в моем дб к списку категорий продуктов, магазин продаетEntity Framework One to Many генерирует исключение

Так столы;.

shops 
int   id  //shopId & primaryKey 
varchar(50) shopName 
...     //other details left out. 

ShopProductTypes 
int   id  //Category id 
int   ShopId //Foreign Key to shop table 
varchar(50) CategoryName 
... 

Это все straighforwards, и работает через SQL для просмотра и т.д. лакомства

Я импортировал модель базы данных, и unbchecked окна множественного числа/ образовывать форму единственного числа

моего контекст,..

public ReportingContext(string connectionString) : base(connectionString) 
     { 

      Database.SetInitializer<ReportingContext>(null); 

     } 

     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
     } 

     public DbSet<AutoComp_Reporting.DAL.Shop> Shops{get; set;} 

     public DbSet<AutoComp_Reporting.DAL.ShopProductTypes> ShopCategories { get; set; } 

    } 

но когда я бегу;

var foo = (from s in context.Shops 
      where (s.Id == id).select s).toList(); 

Я могу видеть все магазины, но если я пытаюсь посмотреть на категории в QuickWatch, я получаю происходит некорректно Exception

{ "Произошла ошибка при выполнении определения команды. См внутреннее исключение деталей "}

System.Data.EntityException {System.Data.EntityCommandExecutionException} 

размотки, что в конечном итоге показывает.

Message "Invalid column name 'Shops_Id'.\r\nInvalid column name 'Shops_Id'.\r\nInvalid column name 'Shops_Id'." 

Возможно, я ошибаюсь, поскольку я новичок в инфраструктуре сущности, но я не могу исправить эту ошибку. У меня есть MultipleActiveResultSets=True в моей строке подключения к базе данных.

Так как же выяснить причину этой ошибки и/или исправить ее? Я предполагаю, что фактическое внутреннее исключение сводится к тому, что структура интерпретирует свойства, поэтому может быть красная селедка.

+0

В вашем сообщении об ошибке указано «Shops_Id», тогда как в определении вашей таблицы оно отображается как «ShopId». –

+0

Я знаю, я предположил, что это был артефакт структуры, если честно, поскольку модель, которую я использую в своем коде, была создана из базы данных. Или вы говорите, что каждый раз, когда я импортирую/обновляю модель, мне нужно будет отредактировать автоматически сгенерированный код, чтобы совпадение идентификатора с ожидаемой инфраструктурой? Это кажется довольно плохой структурой, если он пытается заставить меня перепроектировать существующую базу данных, чтобы она соответствовала ее ожиданиям! – Matt

+0

вы можете отправить ShopProductTypes код? – Smaug

ответ

0

Изменение имени внешнего ключа в таблице и применение атрибута ForeignKey работать. Однако я уверен, что это не правильное решение, иначе это означает, что фреймворк работает только в том случае, если у вас есть база данных, которая была создана для определенного соглашения об именах.

Принимая во внимание это устаревшее приложение, как я могу исправить эту проблему раз и навсегда?

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