Tôi đang cố gắng thực thi Mã khung thực thể đầu tiên CTP4. Giả sử tôi có:Có thể tự động ánh xạ khóa ngoài cho một đối tượng bằng cách sử dụng kho lưu trữ không?
public class Parent
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Child
{
public int Id { get; set; }
public string Name { get; set; }
public Parent Mother { get; set; }
}
public class TestContext : DbContext
{
public DbSet<Parent> Parents { get; set; }
public DbSet<Child> Children { get; set; }
}
public class ChildEdit
{
public int Id { get; set; }
public string Name { get; set; }
public int MotherId { get; set; }
}
Mapper.CreateMap<Child, ChildEdit>();
Ánh xạ tới mô hình Chỉnh sửa không phải là vấn đề. Trên màn hình của tôi, tôi chọn người mẹ qua một số kiểm soát (DropDownList, autocompleter, vv) và Id của người mẹ được đăng ở phía sau:
[HttpPost]
public ActionResult Edit(ChildEdit posted)
{
var repo = new TestContext();
var mapped = Mapper.Map<ChildEdit, Child>(posted); // <------- ???????
}
Làm thế nào tôi nên giải quyết việc lập bản đồ cuối cùng? Tôi không muốn đặt Mother_Id vào đối tượng Child. Bây giờ tôi sử dụng giải pháp này, nhưng tôi hy vọng nó có thể được giải quyết trong Automapper.
Mapper.CreateMap<ChildEdit, Child>()
.ForMember(i => i.Mother, opt => opt.Ignore());
var mapped = Mapper.Map<ChildEdit, Child>(posted);
mapped.Mother = repo.Parents.Find(posted.MotherId);
EDIT này hoạt động, nhưng bây giờ tôi phải làm điều đó cho mỗi phím nước ngoài (BTW: bối cảnh sẽ được tiêm trong dung dịch cuối cùng):
Mapper.CreateMap<ChildEdit, Child>();
.ForMember(i => i.Mother,
opt => opt.MapFrom(o =>
new TestContext().Parents.Find(o.MotherId)
)
);
gì tôi thực sự muốn sẽ là:
Mapper.CreateMap<int, Parent>()
.ForMember(i => i,
opt => opt.MapFrom(o => new TestContext().Parents.Find(o))
);
Mapper.CreateMap<ChildEdit, Child>();
Có thể với Automapper không?
Làm việc như một sự quyến rũ. Cảm ơn. –
Bạn có thể cho biết cách sử dụng giải pháp của mình khi tôi muốn ánh xạ id tới thực thể không? Tôi có nghĩa là làm thế nào để lập bản đồ khi tôi thực hiện tất cả mọi thứ? – user2412672