我有一个EquityWatchList : WatchList
课程,如下所示:
public class EquityWatchList : WatchList
{
public virtual ICollection<Stock> Stocks { get; set; }
public EquityWatchList()
{
this.Stocks = new List<Stock>();
}
}
使用TPH将数据映射到数据库,并使用基类属性的discriminator字段。它通过以下映射成功Adds
库存到WatchListEquities
表:
public class EquityWatchListMap : EntityTypeConfiguration<EquityWatchList>
{
public EquityWatchListMap()
: base()
{
// Primary Key
this.HasKey(t => t.ID);
// Properties
this.Property(t => t.Name)
.IsRequired()
.HasMaxLength(100);
this.Property(t => t.UserID)
.HasMaxLength(128);
this.Ignore(t => t.State);
this.Ignore(t => t.UsePropertyNotifications);
// Table & Column Mappings
this.ToTable("WatchList");
this.Property(t => t.ID).HasColumnName("ID");
this.Property(t => t.Name).HasColumnName("Name");
this.Property(t => t.UserID).HasColumnName("UserID");
this.Property(t => t.Type).HasColumnName("Type");
// Relationships
this.HasMany(t => t.Stocks)
.WithMany(t => t.EquityWatchLists)
.Map(m =>
{
m.ToTable("WatchListEquities");
m.MapLeftKey("WatchListId");
m.MapRightKey("StockId");
});
}
}
这一切都是使用断开连接的上下文发生的。我的问题是当我尝试删除WatchList
中的任何股票时,保存它们永远不会被删除。
我已经阅读了这篇文章here,其中说你基本上必须重新查询数据库的内容,然后将其与内存中的内容进行比较,删除内容然后重新保存。这听起来很错误,但即使听起来不错,我似乎也无法做到,因为没有DbSet<EquityWatchList>
可以删除股票,只有基数DbSet<WatchList>
?
这基本上不可能吗?