Это дополнительный вопрос к этому вопросу Я задал вчера.Я точно обнаружил проблему, которая, как мне кажется, вызывает у меня горе, и я думаю, что могу объяснить ситуацию с большей ясностью.
Я просто не могу понять, как писать объекты со многими ко многимсвязь с базой данных 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}
Есть идеи, что я делаю неправильно?Нужно ли вставлять их в особом порядке?Как я могу получить много-много отношений, чтобы правильно записать в базу данных?
Спасибо за вашу помощь !!!