Как вы знаете, я использую: Visual Studio 2008, .NET 3.5
Кампания - это отношение один к одному с Campaign_Url, поэтому для нескольких кампаний может использоваться один и тот же Campaign_Url.
КакВы можете увидеть следующий код:
Я нахожу объект Campaign из контекста с SelectedCampaignID
Campaign aCampagin = (from c in context.Campaign
where c.campaign_id == SelectedCampaignID
select c).First();
Найти выбранный объект Campaign_Url из контекста с SelectedCampaignUrlID
CampaignUrl aCampaign_Url = (from c_url in context.CampaignUrlSet
where c_url.campaigin_url_id == SelectedCampaignUrlID
select c_url).First();
Назначитьот сущности CampaignUrl до сущности Campaign
aCampagin.Campaign_Url = aCampaign_Url;
context.SaveChanges();
Но в базе данных таблица Campaign имеет столбец url_id, который имеет ключ foregin со столбцом CampaignUrlID таблицы CampaignUrl.
Если я обновляюсь с помощью обычного SQLЯ бы просто
UPDATE Campaign SET url_id = SelectedCampaignUrlID WHERE Campaign_ID = SelectedCampaignID;
Так что было бы избежать поиска сущности CampaignUrl.
Я не верю, что делаю правильный путь ... Каков будет правильный путьделать это обновление со структурой сущностей?
РЕДАКТИРОВАТЬ: включить случай, который я пытался изменить по ID.
Campaign aCampagin = (from c in context.Campaign.Include("Campaign_Url")
where c.campaign_id == cam.campaign_id
select c).First();
aCampagin.Campaign_Url.campaigin_url_id = SelectedCampaignUrlID.Value;
context.SaveChanges();
Это дает ошибку:
Свойство 'campaigin_url_id' является частью ключевой информации объекта и не может быть изменено.