c# - 将数据添加到一个表中会将重复数据添加到关系表中
问题描述
我必须有关系的表。表discipline
列出了可能的学科。表participant
列出了比赛的参与者。如果我添加参与者,它会将所选学科再次添加到discipline
表中。
模型类discipline
:
public class Discipline
{
public Discipline()
{
Participants = new HashSet<Participant>();
}
[Key]
public int DisciplineId { get; set; }
public string Name { get; set; }
public virtual ICollection<Participant> Participants { get; set; }
}
模型类participant
:
public class Participant
{
public Participant()
{
Disciplines = new HashSet<Discipline>();
}
[Key]
public int ParticipantId { get; set; }
public string Forename { get; set; }
public string Name { get; set; }
public virtual ICollection<Discipline> Disciplines { get; set; }
public virtual ICollection<Result> Results { get; set; }
}
这是将学科表的条目列表绑定到多选框的方法。
private void BindData()
{
using (var db = new ParticipantsContext())
{
var disciplines = db.Disciplines.ToList();
DisciplinListBox.ItemsSource = disciplines;
DisciplinListBox.DataContext = disciplines;
}
}
private void OK_Button_Click(object sender, RoutedEventArgs e)
{
using (var db = new ParticipantsContext())
{
var selectedDisciplines = DisciplinListBox.SelectedItems;
ICollection<Discipline> selectedDisciplinesCollection = new List<Discipline>();
foreach (Discipline selectedDiscipline in selectedDisciplines)
{
Discipline discipline = new Discipline
{
DisciplineId = selectedDiscipline.DisciplineId,
Name = selectedDiscipline.Name
};
selectedDisciplinesCollection.Add(discipline);
}
var participant = new Participant
{
Forename = ForenameTextBox.Text,
Name = NameTextBox.Text,
Disciplines = selectedDisciplinesCollection
};
db.Participants.Add(participant);
db.SaveChanges();
}
this.Close();
}
我希望在表中添加 a和participant
之间的关系- 但不添加新的.discipline
participant
dbo.ParticipantDisciplines
discipline
我错过了什么?
如果需要完整代码:https ://gitlab.com/svanschu/EasyCalc/tree/master/DecksummeWPF
解决方案
您正在创建 EF 无法跟踪的新对象。您可以像下面这样在事先保存时附加它们。
...
db.Disciplines.Attach(discipline);
selectedDisciplinsCollection.Add(discipline);
推荐阅读
- view - 在一个 select 语句中的所有视图中查找某个列名
- php - 字符串上的PHP多个substr
- android - 问题:更改 android 中未聚焦的 TextInputLayout 的边框颜色或框笔划
- node.js - NodeJS 测试授权失败
- android - 当我的应用程序在后台时,如何让我的“ExoPlayer”保持运行?
- php - CodeIgniter - 找不到类“CI_Loader”
- r - 使用 cowplot 和 ggplot2 在某些行周围绘制边框
- java - Java/AEM:com.day.cq.commons.Externalizer absolutelink 函数返回错误的主机名
- reactjs - Styled-Components 重新加载后丢失样式
- r - 按一列中的值组织数据