Как вы отправляете объекты со связями многие ко многим, используя Entities Framework? - PullRequest
2 голосов
/ 23 июля 2010

Это дополнительный вопрос к этому вопросу Я задал вчера.Я точно обнаружил проблему, которая, как мне кажется, вызывает у меня горе, и я думаю, что могу объяснить ситуацию с большей ясностью.

Я просто не могу понять, как писать объекты со многими ко многимсвязь с базой данных SQL с использованием Entities Framework в проекте C # ASP.NET MVC 2.

Вот что я попробовал:

У меня очень простая база данных только с двумя таблицами.Хобби с именем и описанием столбцов и Люди с столбцами для имени и фамилии.Я создаю .edmx по умолчанию со всем выбранным.(Оба также используют int в качестве первичного ключа (HobbieID, PersonID), который я установил в базе данных, предназначенной для автоматического увеличения.)

Затем я могу успешно использовать следующий код:

SampleEntities entities = new SampleEntities();
Hobby h1 = new Hobby() { Name = "Tennis", Description = "Not golf" };
Person p1 = new Person() { First = "Jack", Last = "Black" };
entities.Hobbies.AddObject(h1);
entities.People.AddObject(p1);
entities.SaveChanges();

Конечно, оба они добавлены в базу данных правильно.Теперь, когда он ломается.

Я добавляю еще одну таблицу в базу данных с именем JunctionHobbiesPeople, которая имеет два столбца (HobbieID, PersonID), которые я создаю с помощью внешних ключей, используя всплывающее окно связей в конструкторе базы данных.Затем я добавляю таблицу JunctionHobbiesPeople в конструктор сущностей (с помощью обновления правой кнопкой мыши, с помощью графического интерфейса пользователя), и она графически показывает правильное отношение «многие ко многим».

Затем я пытаюсь использовать следующий код:

SampleEntities entities = new SampleEntities();
Hobby h1 = new Hobby() { Name = "Tennis", Description = "Not golf" };
Person p1 = new Person() { First = "Jack", Last = "Black" };
p1.Hobbies.Add(h1);
entities.People.AddObject(p1);
entities.SaveChanges();

Первая ошибка, которую я получаю, связана с DefiningQuery.Я могу это исправить, просто удалив все элементы DefiningQuery из xml в коде за файлом .edmx.Говоря о том, для чего, в качестве дополнительного вопроса, для чего этот элемент - не следует ли его удалить?

После того, как эта ошибка исчезнет, ​​я получаю следующую ошибку:

InnerException  {"Invalid object name 'ModelStoreContainer.JunctionHobbiesPeople'."}    System.Exception {System.Data.SqlClient.SqlException}

Есть идеи, что я делаю неправильно?Нужно ли вставлять их в особом порядке?Как я могу получить много-много отношений, чтобы правильно записать в базу данных?

Спасибо за вашу помощь !!!

1 Ответ

5 голосов
/ 25 октября 2011

Полагаю, вы уже решили эту проблему с момента публикации в 2010 году, в любом случае, это может помочь кому-то еще :) У меня была такая же проблема при использовании MVC3.В моем исходном файле edmx была строка, которая выглядела так:

<EntitySet Name="StockUpdates" EntityType="SwebotModel.Store.StockUpdates" store:Type="Tables" store:Schema="dbo" store:Name="StockUpdates"/>

Чтобы решить эту проблему, я изменил ее на следующее:

<EntitySet Name="StockUpdates" EntityType="SwebotModel.Store.StockUpdates" store:Type="Tables" Schema="dbo"/>

Удаление store: Name и «store:» передСхема.

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