【发布时间】:2012-02-03 16:56:40
【问题描述】:
您知道,我正在使用:Visual Studio 2008、.NET 3.5
Campaign 与 Campaign_Url 是多对一的关系, 因此多个广告系列可以共享同一个 Campaign_Url。
如你所见,代码如下:
我从具有 SelectedCampaignID 的上下文中找到 Campaign 实体
Campaign aCampagin = (from c in context.Campaign
where c.campaign_id == SelectedCampaignID
select c).First();
使用 SelectedCampaignUrlID 从上下文中查找选定的 Campaign_Url 实体
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 列,该列具有与 CampaignUrl 表的 CampaignUrlID 列的前键。
如果我使用普通 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”是对象键的一部分 信息,不能修改。
【问题讨论】:
标签: c# .net visual-studio-2008 entity-framework