2010-10-05 13 views
6

Tôi đang tạo một dịch vụ OData với Dịch vụ Dữ liệu WCF bằng cách sử dụng EDMX. Làm thế nào tôi có thể tạo một thuộc tính được tính toán cho một loại thực thể, để giá trị của nó được tính trong dịch vụ (C#) và không đến từ cơ sở dữ liệu?
Giá trị của thuộc tính này dựa trên giá trị của các thuộc tính khác, được ánh xạ tới các trường trong cơ sở dữ liệu.Cách tạo thuộc tính được tính trong Dịch vụ dữ liệu (OData)?

Trả lời

2

Giải pháp mà tôi tìm thấy là sử dụng Mã khung thực thể trước thay vì EDMX. Nó cho phép bạn tạo các thuộc tính được tính toán chỉ bằng cách tạo các thuộc tính tiêu chuẩn trong mã.
Dưới đây là ví dụ:

public class Person 
{ 
    public String FirstName { get; set; } 
    public String LastName { get; set; } 
    public String FullName 
    { 
    get { return FirstName + " " + LastName; } 
    } 
} 
+0

Đáng buồn thay, nó chỉ thích hợp cho Nhà cung cấp Phản ánh cung cấp khả năng xây dựng Dịch vụ Dữ liệu chỉ đọc. –

2

Nếu bạn đang phơi bày tập EDMX của bạn trực tiếp, sử dụng mặc định cung cấp Entity Framework cho Data Services, một cái gì đó như thế này:

public class MyService: DataService<MyEntities> { 

Sau đó, không may bạn không thể tiếp xúc với bất kỳ thuộc tính 'mới' mà không phải là trong mô hình EDM khung thực thể cơ sở.

Có nói rằng bạn có các tùy chọn khác, bạn có thể viết một nhà cung cấp phản ánh hoặc nhà cung cấp tùy chỉnh thêm thuộc tính bổ sung và ủy quyền hầu hết công việc cho EF dưới mui xe.

Vấn đề là thiết lập tất cả các đoàn đại biểu là KHÔNG dễ dàng ngày hôm nay.

series of posts giải thích các nhà cung cấp và cho biết cách tạo dịch vụ dựa trên nhà cung cấp tùy chỉnh và one shows cách tạo dịch vụ này bằng cách sử dụng Nhà cung cấp phản ánh.

+0

Cảm ơn Alex. Tôi sẽ đánh dấu câu trả lời của bạn là câu trả lời được chấp nhận, mặc dù tôi đã tìm thấy một giải pháp dễ dàng hơn: thay vì sử dụng EDMX, tôi sử dụng Entity Framework Code First; nó cho phép tôi tạo các thuộc tính được tính toán chỉ bằng cách tạo các thuộc tính trong mã. Tôi sẽ ghi lại điều này trong một bài đăng trên blog. – Fabrice