Tôi có 2 loại sau đây:Nhận tài sản thực thể chuyển hướng sau khi chèn
public class Reward
{
public int Id { get; set; }
public int CampaignId { get; set;
public virtual Campaign Campaign { get; set; }
}
public class Campaign
{
public int Id { get; set; }
public virtual ICollection<Reward> Rewards { get; set; }
}
Với điều này tôi có tất cả những thứ cần thiết hiển nhiên như một DbContext và ánh xạ.
Bây giờ chúng ta hãy nói rằng tôi tạo ra một thực thể thưởng và chèn nó như thế này:
var reward = new Reward { CampaignId = 1 };
context.Set<Reward>().Add(reward);
context.SaveChanges();
reward = context.Set<Reward>().SingleOrDefault(a => a.Id == reward.Id);
//reward.Campaign is null
Tôi rõ ràng là có một chiến dịch với Id 1 để hạn chế FK là hạnh phúc. Sau lần chèn này, thực thể thưởng của tôi có bộ ID nhận dạng mới. Bây giờ vấn đề là phần thưởng vẫn chỉ là thực thể Phần thưởng mà tôi đã tạo. Và với điều này, thuộc tính reward.Campaign rỗng. Có vẻ như EF đang giữ các thực thể được chèn vào trong bộ nhớ, và khi tôi làm một .SingleOrDefault (a => a.Id == reward.Id) nó đơn giản trả về thực thể trong bộ nhớ, chứ không phải một proxy mới. Đây có lẽ là một điều tốt.
Vì vậy, câu hỏi là: Làm cách nào để truy cập hoặc tải thuộc tính điều hướng sau khi chèn hoặc nhận proxy mới có thuộc tính điều hướng là proxy.
Tôi có thể chèn sai không?
không lập bản đồ của bạn trông như thế nào? – Maritim
có thể trùng lặp với [Entity Framework: Tôi đặt khóa ngoại, SaveChanges rồi truy cập thuộc tính điều hướng, nhưng nó không tải thực thể liên quan. Tại sao không?] (Http://stackoverflow.com/questions/15552891/entity-framework-i-set-the-foreign-key-savechanges-then-access-the-navigation) – Colin