0

我正在尝试构建我的第一个 EntityFramework Code First 应用程序。它是一个 WPF 应用程序。因此我实现了一个小型测试模型。一个俱乐部可以有很多竞争对手,而一个竞争对手必须有一个俱乐部,所以在我看来,这看起来像是标准的 1:n 关系。当我想从俱乐部中删除竞争对手时,我的问题就开始了。如果我删除整个俱乐部,所有竞争对手和俱乐部行都会从我的数据库中删除。但是当我只想删除一个竞争对手时,框架会抛出 DBUpdateException:

*“Club_Competitors”关联集中的关系处于“已删除”状态。给定多重约束,相应的“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);

在程序启动时,我将所有实体加载到我的应用程序中

    dbsCompetitors.Load();
    dbsClubs.Load();

然后将它们绑定到数据网格,因此我创建了一个访问 DbSet 的本地部分的 Getter

    public ObservableCollection<Club> Clubs
    {
        get { return dbsClubs.Local; }
    }

我的 xml 代码看起来像这样

<DataGrid Grid.Column="0" Name="dgClubs" ItemsSource="{Binding Clubs}"/>
<DataGrid Grid.Column="1" Name="dgCompetitors" ItemsSource="{Binding ElementName=dgClubs, Path=SelectedItem.Competitors}"/>

当应用程序关闭时,我只是打电话

_context.SaveChanges();

有谁知道我做错了什么?

亲切的问候马努

4

0 回答 0