2012-06-21 31 views
5

Một mối quan hệ một-nhiều hoặc nhiều-nhiều trong khung Entity Mã đầu tiên trông như thế này: -Entity Framework Mã Trước CA2227 "Bộ sưu tập thuộc tính cần được đọc chỉ"

public class Foo 
{ 
    public int Id { get; set; } 
    public virtual ICollection<Bar> Bars { get; set; } 
} 

này vi phạm Phân tích Mã cai trị năm 2227 " Thuộc tính Bộ sưu tập chỉ nên đọc ".

Làm setter bảo vệ không được, và làm cho nó tin: -

public class Foo 
{ 
    public int Id { get; set; } 
    public virtual ICollection<Bar> Bars { get; private set; } 
} 

thì tất nhiên làm hại chính CA1811 "Foo.Bars.set (ICollection < Bar>) dường như không có công thượng nguồn hoặc người gọi được bảo vệ ".

Tôi không muốn loại bỏ quy tắc trên toàn cầu vì tình trạng nó tồn tại để ngăn chặn là khá quan trọng, nhưng ngăn chặn nó cục bộ mỗi khi tôi muốn tuyên bố một mối quan hệ dường như tắt. Có cách nào để khai báo mối quan hệ không vi phạm CA2227 không?

+0

Tôi đã có vấn đề chính xác như vậy. Sau khi tôi không tìm thấy bất kỳ giải pháp hợp lý nào, tôi đã quyết định rằng SuppressMessage() có lẽ là cách thực dụng nhất để thực hiện. – theDmi

Trả lời

4

Đặt tất cả các thực thể mã đầu tiên của bạn vào nhóm riêng của chúng và loại trừ quy tắc cho hội đồng đó.

+0

Câu trả lời đúng được cung cấp bởi Bonner. –

5

Thay đổi mã của bạn như sau:

public class Foo { 
    public Foo() { 
     Bars = new Collection<Bar>(); 
    } 

    public int Id { get; set; } 
    public virtual ICollection<Bar> Bars { get; private set; } 
} 
Các vấn đề liên quan