Jas*_*ans 4 ef-code-first entity-framework-4.1
我先使用EF 4.1代码.给出以下类片段:
public class Doctor
{
public virtual ICollection<Hospital> Hospitals { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
注意:我在数据库上下文中有这个:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
this.Configuration.LazyLoadingEnabled = false;
}
Run Code Online (Sandbox Code Playgroud)
我想确保这里不涉及延迟加载.
我的问题是,如果没有virtual
Hospitals属性上的关键字,当我找回一家医院与他有关联的医院时,该收集是空的.通过包含virtual
关键字,医院集合确实包含1项,这是我所期望的.
问题是,当我想创建一个全新的医生并立即将他与医院联系时,我得到一个Null reference
例外,因为医院的财产尚未初始化.
谁能指出我在这里做错了什么?如何在创建新医生时向医院添加项目.
干杯.雅.
Lad*_*nka 22
您的代码是您在所有示例中通常看到的内容,但为了使这项工作更好:
public class Doctor
{
private ICollection<Hospital> _hospitals;
public virtual ICollection<Hospital> Hospitals
{
get { return _hospitals ?? (_hospitals = new HashSet<Hospital>()); }
set { _hospitals = value }
}
}
Run Code Online (Sandbox Code Playgroud)
如果您不使用virtual
关键字EF将不会为您初始化集合.同时,如果你Doctor
通过它的构造函数创建全新的,你必须自己处理初始化.
归档时间: |
|
查看次数: |
3556 次 |
最近记录: |