2009-07-24 17 views
5

This question làm nổi bật rằng bạn không thể sử dụng GUID được tạo phía máy chủ với khung thực thể. Nhưng, tôi muốn thế hệ GUID được xử lý ở cấp DAL của API cơ sở dữ liệu (ví dụ, khi hàm tạo của một thực thể được gọi, tôi muốn id của thực thể được khởi tạo thành một GUID mới). Kế hoạch của tôi là viết một công cụ nhỏ để tạo ra một loạt các tệp mã là các lớp một phần của các thực thể. Tôi có một cách để làm điều đó, câu hỏi đặt ra là: Tôi ra khỏi tâm trí của tôi để làm điều đó theo cách này hay đây là cách tôi nên làm nó?Làm việc với GUID và Khung thực thể

Vấn đề của tôi là khi tệp edmx cập nhật, tôi không muốn phải chỉnh sửa một loạt tệp mã, tôi chỉ muốn chạy một công cụ sẽ thực hiện những gì cần thiết.

Một lần nữa, đầu của tôi có thẳng không?

Trả lời

6

Vâng, nếu bạn nhìn vào các lớp một phần khung thực thể tạo ra theo mặc định, không có hàm tạo mặc định.

Vì vậy, làm điều này trong một lớp học phần riêng biệt sẽ làm việc độc đáo:

public partial class Customer{ 
    public Customer(){ 
     _ID = Guid.NewGuid(); 
    } 
} 

Vì vậy, có lẽ không có lý do để không làm điều gì đó giống như bạn đang có kế hoạch.

Bạn có thể muốn xem xét các mẫu T4 để thực hiện việc này. Đó là cách EF 4.0 (tức là EF trong .NET 4.0) cho phép bạn tùy chỉnh mã được tạo ra. Bây giờ trong khi trong 4,0 kinh nghiệm đó là khá vô nghĩa bạn có thể dễ dàng đặt một cái gì đó với nhau dựa trên T4 chỉ để tạo ra các lớp partials này sẽ làm việc tốt trong NET 3.5 SP1.

Hope this helps

Alex

+0

đề nghị Rất hữu ích. Có lẽ tôi sẽ không sử dụng mẫu T4 trên dự án này, nhưng rất hữu ích để biết cho các dự án khác. –

+0

Điều này làm việc cho tôi khi một giá trị mặc định serversid của newid() không. Cảm ơn! – el2iot2

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