EF Power Tools不会生成关系视图

时间:2015-08-22 11:10:12

标签: c# entity-framework entity-framework-6 ef-power-tools

(对于SO来说不是新手,但对问题提出新意见,所以请原谅错误。谢谢。)

我使用EF Power Tools预生成视图,但后来我在生成的类的以下方法的末尾看到了“return null;”,所以我想知道何时(或如果){ {1}}实际上返回null。

以下是方法:

GetView

以下是我的模特:

    /// <summary>
    /// Gets a view corresponding to the specified extent.
    /// </summary>
    /// <param name="extent">The extent.</param>
    /// <returns>The mapping view, or null if the extent is not associated with a mapping view.</returns>
    public override DbMappingView GetView(EntitySetBase extent)
    {
        if (extent == null)
        {
            throw new ArgumentNullException("extent");
        }

        var extentName = extent.EntityContainer.Name + "." + extent.Name;

       //...

       if (extentName == "CodeFirstDatabase.Post")
        {
            return GetView22();
        }

        if (extentName == "CodeFirstDatabase.PostComment")
        {
            return GetView23();
        }

        //...

        return null;
    }

我的帖子和评论具有相同的模型(毕竟,它们只是存储文本)。我使用public class Post { public Post() { comments = new HashSet<PostComment>(); } //... [InverseProperty("post")] public virtual ICollection<PostComment> comments { get; set; } //... } public class PostComment { [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] [ForeignKey("comment")] public long comment_id { get; set; } public Post comment { get; set; } [ForeignKey("post")] public long post_id { get; set; } [InverseProperty("comments")] public Post post { get; set; } } 模型将注释分组到一个单独的表中,以便对注释的查询可以更快,因为它们不包含实际帖子。

PostComment方法的“return null;”行设置断点会为GetView获取“CodeFirstDatabase.PostComment_comment”,我认为这是指注释外键extentName模型。当然,它返回null,因为EF Power Tool没有为它生成视图。

我的问题是:

  1. 为什么EF Power Tools没有生成该关系的视图(或 任何其他关系)?
  2. 返回null会使EF在运行时生成视图吗?
  3. 如果是2,这是否会影响第一次查询的启动时间?
  4. 作为相关的第四个问题,为什么名称“PostComment”与视图生成中的实际上下文名称一起使用?

    我正在使用EntityFramework 6.1.3 btw。

0 个答案:

没有答案