Tôi đang sử dụng EF với mã đầu tiên và tôi có các mô hình như thế này:Chèn một thực thể mới mà không cần tạo các đối tượng trẻ nếu chúng tồn tại
public class Product
{
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
public Customer Customer { get; set; }
}
public class Customer
{
public Customer()
{
Products = new List<Product>();
}
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Id { get; set; }
// more stuff snipped...
public ICollection<Product> Products{ get; set; }
}
Tôi nhận được một ID của khách hàng cùng với một danh sách các ID sản phẩm . Khi sản phẩm không tồn tại trong DB, tôi muốn thêm nó:
var newProduct = new Product{ Id = id, Name = "<no name yet>", Customer = customer };
InsertProduct(newProduct);
Vấn đề là EF cố gắng để thác những thay đổi và cố gắng để chèn một đối tượng mới Customer
, với cùng một ID như một hiện một, do đó, nó không thành công. Tôi giải quyết điều này như thế nào?
Đây là phương pháp chèn:
public void InsertProduct(Product item)
{
CustomerContext.Entry(item).State = EntityState.Added;
CustomerContext.Set<Product>().Add(item);
}