.NET Entityframework Code首先删除一对多

时间:2013-05-25 12:34:10

标签: .net entity-framework ef-code-first

我正在尝试构建我的第一个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

0 个答案:

没有答案