2010-10-19 39 views
18

Tôi đang sử dụng Khung thực thể lần đầu tiên và muốn biết liệu điều sau đây có thể được không - tôi đã tạo các lớp của mình từ DB và có một lớp được gọi là Danh mục. Rõ ràng là nó có tất cả các trường của tôi trong bảng (ID, CategoryName, SortOrder vv ..) nhưng tôi muốn biết nếu tôi có thể thêm một thuộc tính tùy chỉnh không có trong bảng, nhưng thực sự là kết quả của một tùy chỉnh phương pháp.Thêm thuộc tính tùy chỉnh vào khung thực thể?

Tôi muốn thêm thuộc tính mới có tên 'CategoryURL', về cơ bản thuộc tính 'CategoryName' chạy qua phương thức tùy chỉnh và trả về chuỗi được gạch nối.

Suy nghĩ ban đầu của tôi là kế thừa từ lớp Danh mục được tạo và tạo nội dung như thế này bên trong?

public string CategoryURL 
{ 
    get{ return MyCustomMethod(this.CategoryName) } 
} 

Đây có phải là cách tiếp cận chính xác không? Và 'this.CategoryName' có hoạt động như tôi nghĩ không? Về cơ bản kết quả cuối cùng là khi tôi trả về một danh sách của 'Thể loại' Tôi muốn điều này là một phần của lớp để tôi có thể sử dụng nó trong vòng lặp foreach của tôi.

Hy vọng điều này có ý nghĩa?

Trả lời

19

bạn nên sử dụng một lớp partial:

public partial class Category 
{ 
    public string CategoryURL 
    { 
     get{ return MyCustomMethod(this.CategoryName); } 
    } 
} 

Bằng cách này this.CategoryName sẽ chỉ làm việc như mong đợi.

Điều này làm việc vì các lớp được tạo bởi trình tạo mã khung thực thể cũng tạo ra các lớp học partial. Nó cũng có nghĩa là bạn có thể tái tạo một cách an toàn các lớp từ cơ sở dữ liệu mà không ảnh hưởng đến các lớp một phần mà bạn đã tự định nghĩa.

+0

Cảm ơn tuyệt vời – leen3o

+0

Thật thông minh! Theo một cách nào đó, đó là loại ma quái vì nó có vẻ * quá * thông minh. Chúng ta có lý do gì để tin rằng Microsoft có thể phá vỡ điều này trong một bản phát hành EF trong tương lai không? Tôi cho rằng tôi nên lo lắng quá nhiều vì câu trả lời này gần bốn tuổi và nó chỉ làm việc cho tôi! –

9

Bạn nên thêm thuộc tính [NotMapped] vào thuộc tính

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