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