(对于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没有为它生成视图。
我的问题是:
作为相关的第四个问题,为什么名称“PostComment
”与视图生成中的实际上下文名称一起使用?
我正在使用EntityFramework 6.1.3 btw。