【发布时间】:2015-08-26 21:30:01
【问题描述】:
我的代码有一个烦人的问题。 我的模型:
public class Option
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Conference> Conference { set; get; }
}
public partial class Conference
{
[Key, ForeignKey("User")]
public int UserId { get; set; }
public virtual Option Option { set; get; }
public virtual User User { get; set; }
}
public partial class User
{
public int Id {get; set; }
public string Name { get; set; }
public virtual Conference Conference { get; set; }
}
现在我通过 dbSet.Find(id) (RepositoryFactory) 从 Db 获取 Option 对象,我想做的是保存新创建的用户,但选择了选项。
如果我这样做:
var option = dbSet.Find(id);
var user = new User()
{
Name = "Name",
Conference = new Conference
{
Option = option
}
};
//...
context.SaveChanges();
我遇到了一个异常: 一个实体对象不能被多个 IEntityChangeTracker 实例引用。
我做错了什么?
编辑:我尝试创建映射,但这似乎也不起作用。
modelBuilder.Entity<Conference>()
.HasKey(x => x.UserId)
.HasRequired(x => x.User)
.WithOptional(user => user.Conference);
modelBuilder.Entity<Option>()
.HasMany(option => option.Conferences)
.WithRequired(conference => conference.Option)
.HasForeignKey(conference => conference.UserId);
【问题讨论】:
标签: c# entity-framework orm insert entity