2
我使用的数据库层代码优先模式。实体框架4代码优先多对多插入
我有两个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 ...我google-d很多这个错误和EF多对多保存,但我没有找到任何有用的,这将帮助我,因为我找不到Code-First原则的样本。
谢谢!
感谢您的回答。我怎么能创建一个DataContext类的构造函数注入? – zigomir 2010-09-01 13:00:45
查看更新的答案。然后在UOW的所有存储库中使用一个'DataContext'。 – 2010-09-01 14:44:34
谢谢,就是这样! :)你能推荐我一个实体框架4电子书/网站/带根本性的东西博客,大家谁使用它应该知道吗? – zigomir 2010-09-02 06:20:49