【发布时间】:2011-04-06 18:49:09
【问题描述】:
我在数据库层使用代码优先模式。
我有两个 POCO 课程:
public class Order
{
[Key]
public int OrderId { get; set; }
public virtual ICollection<Item> Items { get; set; }
// other fields
}
和
public class Item
{
[Key]
public int ItemId { get; set; }
public virtual ICollection<Order> Orders { get; set; }
// other fields
}
然后我有数据上下文类:
public class DataContext : DbContext
{
public DbSet<Item> Items { get; set; }
public DbSet<Order> Orders { get; set; }
}
我有一个“存储库”类:
public class OrderRepository
{
private DataContext dataContext = new DataContext();
public void Save(Order entity)
{
entity.OrderDate = System.DateTime.Now;
dataContext.Orders.Add(entity);
dataContext.SaveChanges();
}
}
当我调用这个 OrderRepository.Save 方法时,我得到一个错误:一个实体对象不能被多个 IEntityChangeTracker 实例引用。
在数据库中,我有一个表 Items、Orders 和 Items_Orders...我为这个错误和 EF 多对多保存做了很多谷歌搜索,但我没有找到任何有用的东西来帮助我,因为我找不到代码优先原则的示例。
谢谢!
【问题讨论】:
标签: c# entity-framework entity-framework-4 many-to-many code-first