回答

收藏

实体框架一对一导航属性未加载

技术问答 技术问答 182 人阅读 | 0 人回复 | 2023-09-12

因此,我有一个简单的数据库,其中有两个表,首先使用实体框架6.02设置代码。提交表和tbl_lst_Company表有一对一的关系。它们是由company和CompanyID字段关联。5 z; [' b; ]. _' i
public partial class Submission{    public Submission()    {                   this.Company = new tbl_lst_Company();        public int Keytbl { get; set;    public int companyid { get; set;    public virtual tbl_lst_Company Company { get; set;        }public partial class tbl_lst_Company              public int CompanyID { get; set;    public string Company { get; set;    public virtual Submission Submission { get; set; }}这是Fluent映射:  c: B0 R* j" r- _/ h" Z' p
                public SubmissionMap()           Primary Key        this.HasKey(t => t.Keytbl);     Table & Column Mappings        this.ToTable("Submissions");        this.Property(t => t.Keytbl).HasColumnName("Keytbl");        this.Property(t => t.companyid).HasColumnName("company");        this.HasRequired(q => q.Company).        WithOptional().Map(t => t.MapKey("Company"));   }    public tbl_lst_CompanyMap()           Primary Key        this.HasKey(t => t.CompanyID);     Properties        this.Property(t => t.Company)            .IsRequired()          .HasMaxLength(150);     Table & Column Mappings        this.ToTable("tbl_lst_Company");        this.Property(t => t.CompanyID).HasColumnName("CompanyID");        this.Property(t => t.Company).HasColumnName("Company");    }这是我想测试上述元测试:' t* O/ ~3 U8 v* s2 S8 P/ q
                public void download_data()(){        var db = new SubmissionContext();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;db.Configuration.LazyLoadingEnabled = true;        var subs = (from s in db.Submissions                                         select s).Take(100)var x = subs.First().Company;        var a = subs.ToArray();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        }我的问题是,公司字段在运行此测试时总是空的。如果我从这里开始db.Submissions.Include(“
( R8 v# E# }. }: X! @& e2 i6 H2 MCompany”)中的s清楚地说,那么Company字段不为null,但我必须急于加载导航属性。我希望公司的导航属性能延迟加载。据我所知,我正在以应有的方式做一切,但没用。我做错了什么?
$ S$ Q7 I# t) e- S0 E( b谢谢
- ]) j6 |# u5 x' ^& D                                                               
8 R' q3 |' L7 b0 c8 B6 z% Z    解决方案:                                                               
5 K& T. V! T! p, i( y$ _4 j                                                                所以我想出了很多错误,但这对我来说是一个有用的解决方案。您不需要实例化单个导航属性。这将永远是空的。如果是对象ICollection,还需要实例化Navigation属性。还有其他小事。谢谢你的帮助。& i, l5 ~' [3 z6 F, [; G6 p3 [
public partial class Submission              public int Keytbl { get; set;    public int Company { get; set;    public virtual tbl_lst_Company tbl_lst_Company{ get; set;        }public partial class tbl_lst_Company{        public tbl_lst_Company() {         this.Submissions = new List();}     public int CompanyID { get; set;    public string Company { get; set;    public virtual ICollection Submissions { get; set; }}public tbl_lst_CompanyMap()()()()()(///)()()()()()(()()()()()())()()(////)())()()()())()()()///////)()()()())())()())()())())()()()()()()()())()()()()()()())()()()())()()()()()()())()()())()()()())()()()()()()()()()()()()//////)/)/)/)()()()()()()()()()()())()())())())()())()())()())()())()())()()())()())()()()()()())()))()))()))()())())())())()()()())()))()))())())()))()()))()()()))()()()))())())()))())()()())())()))())))))())))()()))())))())))()))()())()())()))()))()()()()()))())))))())())()()()()()))))()))())))))()))))()))())()()))))())()()()()()()()())()))()////////)))))))))))))()))))))))()))))))()()()()()()()())))Primary Key    this.HasKey(t => t.CompanyID);    // Properties    this.Property(t => t.Company)        .IsRequired()        .HasMaxLength(150);    // Table & Column Mappings    this.ToTable("tbl_lst_Company");    this.Property(t => t.CompanyID).HasColumnName("CompanyID");    this.Property(t => t.Company).HasColumnName("Company");}public SubmissionMap()()()()()(///)()()()()()(()()()()()())()()(////)())()()()())()()()///////)()()()())())()())()())())()()()()()()()())()()()()()()())()()()())()()()()()()())()()())()()()())()()()()()()()()()()()()//////)/)/)/)()()()()()()()()()()())()())())())()())()())()())()())()())()()())()())()()()()()())()))()))()))()())())())())()()()())()))()))())())()))()()))()()()))()()()))())())()))())()()())())()))())))))())))()()))())))())))()))()())()())()))()))()()()()()))())))))())())()()()()()))))()))())))))()))))()))())()()))))())()()()()()()()())()))()////////)))))))))))))()))))))))()))))))()()()()()()()())))Primary Key    this.HasKey(t => t.Keytbl);    // Table & Column Mappings    this.ToTable("Submissions");    this.Property(t => t.Keytbl).HasColumnName("Keytbl");    this.Property(t => t.Company).HasColumnName("Company");    this.HasOptional(t => t.tbl_lst_Company)    .WithMany(t => t.Submissions).HasForeignKey(d => d.Company);}[TestMethod]public void test_lazy_loading()      using (var db = new SubmissionContext()      var subs = (from s in b.Submissions                                        select s);    var x = subs.First().tbl_lst_Company;    Assert.AreEqual(x,null,"Lazy Loading Failed");
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则