Tôi có một sự tách biệt hoàn toàn của đối tượng Entity Framework tôi và các đối tượng POCO của tôi, tôi chỉ dịch chúng qua lại ...Làm cách nào để đính kèm đối tượng Khung thực thể không phải từ cơ sở dữ liệu?
ví dụ:
// poco
public class Author
{
public Guid Id { get; set; }
public string UserName { get; set; }
}
và sau đó tôi có một đối tượng EF "Tác giả" với tính chất tương tự ..
vì vậy, tôi có tôi đối tượng kinh doanh
var author = new Author { UserName="foo", Id="Guid thats in the db" };
và tôi muốn lưu đối tượng này vì vậy tôi làm follo cánh:
var dbAuthor = new dbAuthor { Id=author.Id, UserName=author.UserName };
entities.Attach(dbAuthor);
entities.SaveChanges();
nhưng điều này mang lại cho tôi những lỗi sau:
An object with a null EntityKey value cannot be attached to an object context.
EDIT: Dường như tôi phải sử dụng entities.AttachTo ("Tác giả", dbAuthor); để đính kèm mà không có một EntityKey, nhưng sau đó tôi có các chuỗi ma thuật mã hóa cứng, sẽ phá vỡ nếu tôi thay đổi thực thể của tôi đặt tên ở tất cả và tôi sẽ không có bất kỳ kiểm tra thời gian biên dịch ... Có cách nào tôi có thể đính kèm mà giữ thời gian biên dịch kiểm tra ?
Tôi hy vọng tôi có thể làm được điều này, như dây cứng được mã hóa giết chết xác nhận thời gian biên dịch sẽ hút =)
Bạn có nhìn vào sửa đổi cho câu trả lời của tôi, nó sẽ cho phép y ou để làm điều đó mà không có chuỗi ma thuật hoặc AttachTo vì các phương thức được thiết kế tạo ra và duy trì bởi mô hình edmx. –
Có, tôi không thêm nó, tôi đang cập nhật nó, vì vậy tôi cần phải đính kèm nó, và lưu thay đổi – sontek
Tôi vẫn tin rằng mô hình của bạn có vấn đề với thuộc tính Id trên đối tượng Tác giả không được đặt làm EntityKey , bạn nên kiểm tra kỹ XML đã tạo và đảm bảo rằng nó được lồng trong phần tử khóa và đảm bảo thuộc tính Id có thuộc tính EdmScalarPropertyAttribute (EntityKeyProperty = true) –