我正在使用EF 7(beta6-13679),在MVC 6 Web应用程序中(由于需要AD集成,只有dnx 4.5.1),数据库第一种方法并且无法获得自引用表以返回值正确地,我在运行我的应用程序时总是得到null,但LINQPad找到并与父/子一起工作就好了。想知道我是否有错误,或者这可能是新EF中的一个错误。希望有人可以复制问题,或者更好,解决问题。 :)对于无法嵌入图像的道歉,我还不允许。
以下是模型:
public partial class Directories
{
public Directories()
{
Directory_ACL_Entries = new HashSet<Directory_ACL_Entries>();
Files = new HashSet<Files>();
}
public long Directory_ID { get; set; }
public DateTime Created { get; set; }
public DateTime Discovery_TS { get; set; }
public string Hash { get; set; }
public bool Hidden { get; set; }
public long? Parent_Directory_ID { get; set; }
public string Path { get; set; }
public virtual ICollection<Directory_ACL_Entries> Directory_ACL_Entries { get; set; }
public virtual ICollection<Files> Files { get; set; }
public virtual Directories Parent_Directory { get; set; }
public virtual ICollection<Directories> InverseParent_Directory { get; set; }
}
这是EF流利代码:
modelBuilder.Entity<Directories>(entity =>
{
entity.HasKey(e => e.Directory_ID);
entity.HasIndex(e => e.Hash).HasName("UK_Directories").IsUnique();
entity.Property(e => e.Created).HasColumnType("datetime");
entity.Property(e => e.Discovery_TS).HasColumnType("datetime");
entity.Property(e => e.Hash)
.IsRequired()
.HasMaxLength(50);
entity.Property(e => e.Path).IsRequired();
entity.HasOne(d => d.Parent_Directory).WithMany(p => p.InverseParent_Directory).HasForeignKey(d => d.Parent_Directory_ID);
});
这是使用逆向工程脚手架自动生成的,具有以下命令:
dnx ef dbcontext scaffold "Server=serverName\SQLEXPRESS;Database=dbName;Trusted_Connection=True;" EntityFramework.MicrosoftSqlServer --outputDir Models
LINQPad显示父值正确返回: LINQPad showing parent and children
Visual Studio返回Null: VS returning null