因此,我有一个简单的数据库,其中有两个表,首先使用实体框架6.02设置了代码。提交表与tbl_lst_Company表具有一对一关系。它们由company和CompanyID字段关联。
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映射:
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");
}
这是我要测试上述实现的单元测试:
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(“
Company”)中的s明确地说,那么Company字段不为null,但我必须急于加载导航属性。我希望公司导航属性延迟加载。据我所知,我正在按应有的方式做所有事情,但是没有用。我究竟做错了什么?
谢谢
因此我想出了很多错误,但这是对我有用的解决方案。您无需实例化单个导航属性。这将使其始终为空。如果它是对象的ICollection,则仍然需要实例化Navigation属性。还有其他一些小事情。谢谢您的帮助。
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<Submission>();
}
public int CompanyID { get; set; }
public string Company { get; set; }
public virtual ICollection<Submission> 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");
}
}
问题内容: 我想限制导航属性返回的模型。例如,我正在使用模型来记录模型的活动。删除模型后,将设置和属性。但是,由于从未真正从数据库中“删除”任何内容,因此这些模型仍将填充在其他模型引用的导航属性中。 AuditInfo类 具有导航属性的类 正在审核的课程 我将如何设置约束,以使BlogPost.Comments中仅未删除的注释(Comment.AuditInfo.Deleted为NULL)? 问题
我定义了两个具有一对多外键关系的类,它们首先由数据库生成。 我创建了一个代理对象,并将其添加到DBContext中。 然后我设置了一个外键属性并尝试访问相应的导航属性。 设置外键属性标签\u id不会加载导航属性标签。代码中的最后一行返回。 这些类遵循此处列出的创建POCO代理的要求(调试显示已创建代理car对象,因此我相信所有要求都已满足)。 数据库表标签包含主键为4的项。 我不是在这里调用或,
将只填充Enabled属性(下图),而不填充Application或CustomVariableGroup属性(下图)。我该怎么做?
实体框架5.0首先使用现有数据库编写代码。使用电动工具对类进行逆向工程。一切都很好。数据库有两个表。一个父母和一个孩子的外键返回到父母ID。ID都是带有自动增量的int。我添加了许多父母记录,现在想将孩子记录添加到特定的父母。我能看到的唯一方法是通过在父母表中搜索名称或其他属性并返回ID来找到适当的父母ID。然后在添加孩子时在外键属性中使用该ID。我不想设置新父母,所以这是将孩子添加到现有父母的唯
我有一个ASP MVC.NET核心(C#)项目,由于业务原因,SQL表不能有外键,因此,EF模型不映射关系(Entity.HasMany...)。 假设EF为实体生成一个模型,为生成一个模型。我想知道他们两个之间的关系。一个有多个并且一个属于一个。该任务在数据库中有项目Id(但请记住,它没有设置为FK)。 现在,我想通过to Entity获得一个项目列表,同时获得每个项目的任务列表。我通过创建一个
是否可以将新的导航架构组件与DialogFragment一起使用?我必须创建自定义导航器吗? 我很乐意将它们与导航图中的新功能结合使用。