Сохранение данных в реляционной базе данных (Entity Framework) - PullRequest
0 голосов
/ 19 февраля 2010

У меня небольшие проблемы с сохранением данных в базе данных.В основном, у меня есть основная таблица, которая имеет связи с другими таблицами (пример ниже).

Tbl_Listing

  • ID
  • UserID - связанный с ID в таблице пользователей
  • CategoryID - связан с идентификатором в таблице категорий
  • LevelID - связан с идентификатором в таблице уровней.
  • Имя
  • Адрес

Обычно мне легко добавлять данные в БД (используя Entity Framework).Тем не менее, я не уверен, как добавить данные в поля с ассоциациями.Многочисленные поля идентификаторов просто должны содержать значение типа int, соответствующее идентификатору в связанной таблице.

Например;когда я пытаюсь получить доступ к столбцу следующим образом, я получаю «Ссылка на объект не установлена ​​для экземпляра объекта».ошибка.

Listing NewListing = new Listing();
NewListing.Tbl_User.ID = 1;
NewListing.Tbl_Category.ID = 2;
...

DBEntities.AddToListingSet(NewListing);
DBEntities.SaveChanges();

Я использую NewListing.Tbl_User.ID вместо NewListing.UserID, потому что поле UserID недоступно через intellisense.

Если я пытаюсь создать объект для каждой связаннойполе я получаю «Отношения между двумя объектами не могут быть определены, потому что они прикреплены к различным объектам ObjectContext».ошибка.

С помощью этого метода я пытаюсь добавить объект без идентификатора .ID, показанного выше - пример NewListing.User = UserObject.

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

Заранее спасибо,

-S

1 Ответ

2 голосов
/ 19 февраля 2010

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

В вашем случае это будет примерно так:

Listing newListing = new Listing();
newListing.Tbl_User = DBEntities.Users.Single(u=>u.ID == 1);
newListing.Tbl_Category = DBEntities.Categories.Single(c=>c.ID == 2);
...

DBEntities.AddToListingSet(newListing);
DBEntities.SaveChanges();

В Entity Framework 4 (поставляемой с .NET 4.0) вы сможете использовать более простой синтаксис, более ожидаемый.

Вы можете посмотреть эту статью на MSDN, где вы можете прочитать об этом подробнее!

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