EF Power Tools не генерирует представления для отношений

(Не новичок в SO, но новичок в задании вопросов, так что простите за ошибки. Спасибо.)

Я использовал EF Power Tools для предварительной генерации представлений, но потом увиделreturn 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, который, я думаю, относится к комментарию внешнего ключа на PostComment модель. Конечно, он вернул это значение, поскольку EF Power Tool не создавал для него представление.

Мои вопросы:

  1. Почему EF Power Tools не создали представление для этих отношений (или любых других отношений)?
  2. Будет ли возвращение null заставить EF генерировать само представление во время выполнения?
  3. Если да к 2, повлияет ли это на время запуска первого запроса?

Как связан четвертый вопрос, почему имя "CodeFirstDatabase"используется вместе с фактическим именем контекста при создании представления?

Я использую EntityFramework 6.1.3 кстати.

0 ответов

Другие вопросы по тегам