2009-08-11 58 views
25

Tôi thấy trong biểu đồ EF của tôi rất nhiều các thuộc tính điều hướng này nhưng không chắc chắn chúng thực sự là gì. Giống như tôi thấy trong nhiều bảng của tôi, tôi có các thuộc tính aspnet_Users.Thuộc tính điều hướng trong khung thực thể là gì?

Đây là những cái gì? Họ có giúp cho việc tham gia không? hay cái gì?

Error 2 
Error 3007: Problem in Mapping Fragments starting at lines 1201, 1423: 
Non-Primary-Key column(s) [Field2] are being mapped in both fragments 
to different conceptual side properties - data inconsistency is possible 
because the corresponding conceptual side properties can be independently 
modified. 

Trả lời

44

Thuộc tính điều hướng cho phép bạn điều hướng (duh!) Từ một thực thể đến thực thể "được kết nối".

Ví dụ: nếu người dùng của bạn được kết nối với vai trò, bạn có thể sử dụng điều hướng "Vai trò" để đọc và kiểm tra vai trò được liên kết với người dùng.

EDIT:

Nếu bạn muốn tải cho người dùng LINQ-to-Đối tượng, và cũng có thể nhìn vào tài sản "Vai trò" chuyển hướng của nó, bạn đã để bao gồm một cách rõ ràng "Vai trò" thực thể trong truy vấn LINQ của bạn - EF thực hiện KHÔNG tải các thuộc tính điều hướng đó tự động cho bạn.

// load user no. 4 from database 
    User myUser = from u in Users.Include("Role") 
       where u.ID = 4 
       select u; 

    // look at the role the user has 
    string roleName = myUser.Role.Name; 

OR:

// load user no. 4 from database 
    User myUser = from u in Users 
       where u.ID = 4 
       select u; 

    // check to see if RoleReference is loaded, and if not, load it 
    if(!myUser.RoleReference.IsLoaded) 
    { 
     myUser.RoleReference.Load(); 
     // now, the myUser.Role navigation property should be loaded and available 
    } 

    // look at the role the user has 
    string roleName = myUser.Role.Name; 

Đó là cơ bản một tương đương chương trình đối với một mối quan hệ chính nước ngoài tại một cơ sở dữ liệu - một mối liên hệ giữa hai đối tượng. Về cơ bản nó "ẩn" hoặc giải quyết một sự kết hợp giữa hai bảng (hoặc hai thực thể, trong EF nói).

Marc

+0

Ah Tôi gặp rắc rối với việc thêm một số lĩnh vực trong. Giống như tôi đã có một bảng (cho phép gọi nó là tableA) Bảng A có 2 lĩnh vực (Dòng 1 và Field 2). Aspnet_userTable của tôi có tất cả các trường thành viên asp.net tiêu chuẩn cộng với trường 1 và trường 2. khi tôi truy cập và cố gắng thêm người dùng mới vào aspnet_userTable Tôi không thấy Field1 hoặc Field2. Vì vậy, tôi đã cố gắng để làm điều đó trong 2 bước đầu tiên làm các aspnet_Users.Createaspnet_Users() sau đó lưu trữ trong một bảng aspnet_Users (cho phép gọi nó là người dùng). Sau đó, tôi đã thử user.Field1 = "cái gì đó" này hoạt động. sau đó tôi đã thử user.Field2 (không tìm thấy thuộc tính). Tôi thấy nó có điều này mặc dù – chobo2

+1

user.TableA.Field1 và user.TableA.Field2 nhưng khi tôi cố gắng thiết lập nó tôi chỉ nhận được một số lỗi tham chiếu null. Tôi đang làm gì sai? – chobo2

+0

Vâng, bạn có liên kết của bạn sai - nếu bạn thêm một bảng mới "TableA" vào hệ thống của bạn, và tạo ra một mối quan hệ khóa ngoại với "aspnet_user", thì đối tượng "TableA" của bạn sẽ có một mối quan hệ (navigation property) tới "aspnet_User " - Không phải hướng ngược lại. Vì vậy, trong thực thể "TableA" của bạn, cần có thuộc tính điều hướng "aspnet_User". –

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