Tôi có hai mã đầu tiên là Foo và FooState trong đó Foo có FooState tùy chọn.Entity Framework Khóa ngoài là Mã khóa chính Đầu tiên
public class Foo
{
[Key]
public int FooId { get; set; }
public FooState FooState { get; set; }
}
public class FooState
{
[Key]
public int FooStateId { get; set; }
[Required]
public int State { get; set; }
[Required]
public Foo Foo { get; set; }
}
này hoạt động tốt tuy nhiên khi tôi cố gắng thêm khóa ngoại để FooState như vậy
public class FooState
{
[Key]
public int FooStateId { get; set; }
[Required]
public int State { get; set; }
[ForeignKey("Foo")]
[Required]
public int FooId
public Foo Foo { get; set; }
}
Tất cả đều ngã xuống vì FooStateId được thực sự sử dụng FooId vì nó là khóa chính. Điều này có ý nghĩa từ quan điểm cơ sở dữ liệu.
Tuy nhiên, tôi muốn không phải điền một thể hiện của Foo khi lưu bản ghi FooState nhưng vẫn giữ lại thuộc tính bắt buộc.
Điều này sẽ cho phép tôi gửi một FooId và nhà nước trong một dto và không phải lấy toàn bộ đối tượng Foo từ DB nếu tôi muốn thay đổi trạng thái của nó.
Tôi nên thiết lập điều này bằng mã EF trước như thế nào?
bạn có thể kết hợp [Key, ForeignKey ("Foo")] – Zakos