【发布时间】:2018-09-26 14:29:19
【问题描述】:
我是 Entity Framework Code First 的初学者。所以我在处理迁移时遇到了麻烦。所以这是一个问题:
我有以下型号:
Defect - table of defects(general)
User - table of users
Order - table or orders
DefectEntry - defects per order(entered by a user).
DefectEntry 有:
public virtual Defect defect { get; set; }
public virtual User user { get; set; }
public virtual Order order { get; set; }
所有其他模型包含:
public virtual ICollection<DefectEntry> Entries { get; set; }
当我尝试为每个订单(订单和用户已知)添加缺陷时,EF 正在创建一个新订单和具有完全另一个 ID 的用户对象(因为每个用户的 ID 都是唯一的,并且被视为 Primary_key)。
private Order order;
private User user;
public AddDefect(ref Order order, ref User user) //this is a name of UserControl
{
InitializeComponent();
this.order = order;
this.user = user;
loadDefects();
}
private void loadDefects()
{
using (MyBridgeContext context = new MyBridgeContext())
{
var defects = context.Defects;
foreach (var obj in defects)
{
defectList.Items.Add(obj);
}
}
}
private void addButton_Click(object sender, RoutedEventArgs e)
{
if (doubleCheck.IsChecked == true)
{
try
{
using (MyBridgeContext context = new MyBridgeContext())
{
DefectEntry entry = new DefectEntry();
foreach (Defect def in defectList.Items)
{
if(defectList.SelectedItem == def)
{
entry.defect = def;
}
}
entry.user = user;
entry.order = order;
entry.dt = DateTime.Now;
context.Entries.Add(entry);
context.SaveChanges();
this.Content = new MainMonitoring(ref order, ref user);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
当我按下 addButton 时,我有这些重复项: User table lookDefects table lookOrder table lookDefect Entry table look
【问题讨论】:
-
另一种方法是使用exposed foreign keys。然后做entry.UserId = user.UserId等
标签: c# entity-framework entity-framework-6 ef-code-first entity-framework-migrations