【发布时间】:2014-05-15 18:09:18
【问题描述】:
在我的应用程序中,我有一个 1 - many 关系,它将“Slots”与“Adverts”映射起来,这样一个广告就可以添加到多个 slot。
Slot (id, location)
Advert (slot_id, text, url)
但是,当从所有广告位中删除广告时,我也希望将其删除。
我认为最好的方法是在Slot.Advert setter 和Advert.Slots.Remove() 方法中添加一个检查,这样如果要删除最后一个关系,则可以删除广告;
public class Slot
{
public int Id { get; set; }
public int? AdvertId { get; set; }
private Advert _Advert;
public virtual Advert Advert
{
get
{
return _Advert;
}
set
{
if (_Advert != value && _Advert != null && _Advert.Slots.Count == 1)
{
// How do I delete the _Advert here? I have no access to the context? :(
}
_Advert = value;
}
}
}
但是,如上所示,我在setter 中没有“上下文”实例,因此我无法删除广告。
虽然我可以打开一个新的上下文,但这样做
- 感觉不对
- 被删除的广告和应用到广告位的新广告不会是事务性的(发生在两个单独的上下文连接中)。
有人知道我有什么选择吗?我在 POCO 领域并使用 Entity Framework 6.1
【问题讨论】:
标签: c# entity-framework relationship