我正在尝试构建我的第一个EntityFramework Code First应用程序。它是一个WPF应用程序。 因此我实施了一个小型测试模型。一个俱乐部可以有很多竞争对手,竞争对手必须有一个俱乐部,所以从我的 这看起来像一个标准的1:n关系。当我想从俱乐部删除竞争对手时,我的问题开始了。 如果我删除整个俱乐部所有竞争对手,俱乐部行将从我的数据库中删除。但是当我只想删除时 框架中的一个竞争对手抛出DBUpdateException:
*'Club_Competitors'AssocSet的关系处于'已删除'状态。给定多重约束,相应的'Club_Competitors'也必须处于'已删除'状态。*
这是我的模特:
[Table("Competitor")]
public class Competitor
{
public int Id { get; set; }
public string Firstname { get; set; }
public string Lastname { get; set; }
public virtual Club Club { get; set; }
public Competitor()
{
}
}
[Table("Clubs")]
public class Club
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ObservableList<Competitor> Competitors { get; set; }
public Club()
{
Competitors = new ObservableList<Competitor>();
}
}
在重写的OnModelCreating中我添加了以下代码行:
modelBuilder.Entity<Club>().HasMany(c => c.Competitors).WithRequired(c => c.Club);
在programstart上我将所有实体加载到我的应用程序中
dbsCompetitors.Load();
dbsClubs.Load();
然后将它们绑定到datagrids,因此我创建了一个访问DbSet的本地部分的Getter
public ObservableCollection<Club> Clubs
{
get { return dbsClubs.Local; }
}
我的xaml代码看起来像这样
<DataGrid Grid.Column="0" Name="dgClubs" ItemsSource="{Binding Clubs}"/>
<DataGrid Grid.Column="1" Name="dgCompetitors" ItemsSource="{Binding ElementName=dgClubs, Path=SelectedItem.Competitors}"/>
当应用程序关闭时,我只需要调用
_context.SaveChanges();
有谁知道我做错了什么?
亲切的问候Manu