2015-10-27 18 views
7

Tôi có hai thực thể mà tôi muốn được kết nối với mối quan hệ 1: 1. Người dùng là hiệu trưởng và UserActivation là phụ thuộc, nhưng tôi không có ý tưởng làm thế nào mà hoạt động.Khuôn khổ thực thể Mã quan hệ One-to-One đầu tiên

public class User 
{ 
    [Key] 
    public Guid Id { get; set; } 
    public string Name { get; set; } 
    public string Lastname { get; set; } 
    public string Username { get; set; } 

    public virtual UserActivation UserActivation { get; set; } 
} 

public class UserActivation 
{ 
    [Key] 
    public Guid Id { get; set; } 
    public Guid UserId { get; set; } 
    public bool Active { get; set; } 

    public virtual User User { get; set; } 
} 

Tôi đã cố gắng để loại bỏ từ khoá 'ảo', đã cố gắng thêm ForeignKey ("UserId") hoặc ForeignKey ("Thành viên"), Tôi thậm chí đã cố gắng làm cho [Key, ForeignKey ("Người dùng") và không ai trong số họ giúp tôi. Tôi muốn tạo mối quan hệ 1: 1 chỉ bằng cách sử dụng dữ liệu. Bất kỳ trợ giúp được thực sự đánh giá cao. Ngoài ra cả hai lớp của tôi đều có PK riêng.

+0

Lỗi bạn nhận được là gì? –

+0

hiện tại tôi đang cố gắng làm điều gì đó ngu ngốc và tôi đã nhận "UserActivation_User_Source:: Multiplicity không hợp lệ trong Role 'UserActivation_User_Source' trong mối quan hệ 'UserActivation_User'. Bởi vì thuộc tính Vai trò phụ thuộc không phải là thuộc tính quan trọng, giới hạn trên của tính đa dạng của Vai trò phụ thuộc phải là '*'. " – GrandaS

+0

AFter bạn đã thực hiện thay đổi đối với mô hình của mình, bạn có thêm/cập nhật quá trình di chuyển không. Hay bạn đã bật tính năng tự động hóa? – mrsargent

Trả lời

10

phím nước ngoài không được hỗ trợ 1: 1 thử:

public class User 
{ 
    [Key] 
    public Guid Id { get; set; } 
    public string Name { get; set; } 
    public string Lastname { get; set; } 
    public string Username { get; set; } 

    public virtual UserActivation UserActivation { get; set; } 
} 

public class UserActivation 
{ 
    [Key] 
    [ForeignKey("User")] 
    public Guid Id { get; set; } 
    public bool Active { get; set; } 

    public virtual User User { get; set; } 
} 

Không thể xác định khi kết thúc chính của một mối liên hệ giữa các loại ‘Model.PersonPhoto’ và ‘Model.Person’. Kết thúc chính của liên kết này phải được định cấu hình rõ ràng bằng cách sử dụng API thông thạo quan hệ hoặc chú thích dữ liệu.

Vấn đề này được giải quyết dễ dàng nhất bằng cách sử dụng chú thích ForeignKey trên lớp phụ thuộc để xác định rằng nó chứa khóa ngoài. Khi cấu hình các mối quan hệ một-một, Entity Framework yêu cầu khóa chính của người phụ thuộc cũng là khóa ngoài. Trong trường hợp của chúng tôi, PersonPhoto là người phụ thuộc và khóa của nó, PersonPhoto.PersonId, cũng phải là khóa ngoài. Tiếp tục và thêm chú thích ForeignKey vào thuộc tính PersonPhoto.PersonId, như trong Ví dụ 4-21. Hãy nhớ chỉ định thuộc tính điều hướng cho mối quan hệ khi thêm chú thích ForeignKey.

https://www.safaribooksonline.com/library/view/programming-entity-framework/9781449317867/ch04s07.html

+0

yea, điều này làm việc, nó làm 1: 1, nhưng bây giờ tôi tin rằng cả hai của Id phải giống nhau, không phải là có thể làm 1: 1, nhưng người dùng sẽ sử dụng Id và UserActivation sẽ sử dụng tài sản UserId để kết nối? – GrandaS

+0

Tại sao bạn cần ID riêng nếu là 1: 1? –

+0

Dưới đây là giải thích chi tiết hơn: http://weblogs.asp.net/manavi/associations-in-ef-4-1-code-first-part-3-shared-primary-key-associations –

Các vấn đề liên quan