Tôi đang làm việc với dự án EF Code First, và tất cả đều tốt. Tôi có một lớp, khách hàng đơn giản. Trong lớp khách hàng của tôi, tôi có một lĩnh vực tôi muốn mã hóa (Có, tôi biết tôi có thể mã hóa ở cấp DB nhưng yêu cầu dictate tôi mã hóa ở cấp Domain/Mã), vì vậy tôi hy vọng rằng tôi có thể làm một cái gì đó như sau:Mã khuôn khổ thực thể Đầu tiên, trình rút gọn hoặc getter không?
public class Customer
{
public int CustomerID { get; set; }
public string FieldToEncrypt { get; set { _FieldToEncrypt = MyEncryptionFunction.Encrypt(); } }
}
Tuy nhiên, tôi giả định rằng nếu setter có định nghĩa, mã khung thực thể đầu tiên có thể bỏ qua thuộc tính đó khi tạo giản đồ. Vì vậy, câu hỏi của tôi là, có cách nào để làm Mã EF đầu tiên với cung cấp getters/setters, hoặc tôi nên di chuyển chức năng này vào một nhà xây dựng? Tôi có nên ghi đè lên một trong các phương pháp/sự kiện xảy ra khi bối cảnh đang lưu thay vào đó không?
EDIT * ** * ** * ** * ** * ** * ****
Là một lưu ý, tôi đang sử dụng DataService để truyền dữ liệu qua dịch vụ giao thức OData. Điều này sẽ tự động tạo ra các phương thức chèn/cập nhật/chọn. Một số gợi ý yêu cầu tạo thuộc tính thứ hai, nhưng lớp DataService dường như không truyền qua các thuộc tính NotMapped. Điều này ném một chút của một kink vào câu hỏi trước đó của tôi.
Nếu bạn đang thực hiện mã hóa trên một chuỗi, tôi khuyên bạn nên đặt mã này ở gần đầu vào nhất có thể. tức là bạn làm gì 'FieldToEncrypt =" asdf ";' (mã hóa được xử lý trong setter), thay đổi thành 'FieldToEncrypt = MyEncryptionFunction.Encrypt (" asdf ");' –
Bạn đã thử chưa? Có một số câu trả lời tương tự trên SO cho thấy rằng điều này hoạt động ra khỏi hộp theo cách bạn đang tìm kiếm. Xem http://stackoverflow.com/questions/11962532/what-does-entityframework-code-first-do-with-property-getters-setters và http://stackoverflow.com/questions/8990319/have-a-custom -setter-on-property-for-ef-code-first-model-entity- – Zeph
Liên kết thứ hai bạn cung cấp dường như gần hơn với những gì tôi cần. Tuy nhiên, anh ấy đang nói về 'không lập bản đồ' trường. Tôi muốn lĩnh vực được lập bản đồ, vẫn còn. Tôi chỉ muốn giá trị được ánh xạ được chuyển đổi trước khi giá trị bị mắc kẹt trong cơ sở dữ liệu. Tôi đoán tôi có một câu hỏi sâu hơn, và đó là: Trong EF Code Đầu tiên, mã có gọi là getters và setters trước/sau khi chèn không? – Richthofen