在接口(EF)中使用虚拟属性

时间:2012-09-19 21:17:47

标签: entity-framework interface

如何在Entity Framework中的界面中使用虚拟属性?:

public interface ICommentable
{
    int CommentableId { get; set; }
    virtual ICollection<Comment> Comments { get; set; }
}

这会引发虚拟关键字的错误,但如果我这样做:

public interface ICommentable
{
    int CommentableId { get; set; }
    ICollection<Comment> Comments { get; set; }
}

然后这个(下面)抛出一个错误(&#34;没有实现......&#34;)

public class Something : ICommentable
{
    int CommentableId { get; set; }
    public virtual ICollection<Comment> Comments { get; set; }
    ...more properties....
}

1 个答案:

答案 0 :(得分:2)

它会引发错误,因为CommentableId不是public。它与将virtual放在有效的类Comments上无关。

在界面中使用虚拟无效,因为它没有意义。定义接口时,实现类必须实现其所有成员。虚拟关键字意味着派生类可以覆盖现有实现,但接口没有实现。