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 не создавал для него представление.
Мои вопросы:
- Почему EF Power Tools не создали представление для этих отношений (или любых других отношений)?
- Будет ли возвращение null заставить EF генерировать само представление во время выполнения?
- Если да к 2, повлияет ли это на время запуска первого запроса?
Как связан четвертый вопрос, почему имя "CodeFirstDatabase
"используется вместе с фактическим именем контекста при создании представления?
Я использую EntityFramework 6.1.3 кстати.