C# 首先使用代码自动检索复杂类型的ICollection
[在实体框架5.0 RC中使用代码优先的DbContext] 不知道发生了什么C# 首先使用代码自动检索复杂类型的ICollection,c#,.net,sql,entity-framework,orm,C#,.net,Sql,Entity Framework,Orm,[在实体框架5.0 RC中使用代码优先的DbContext] 不知道发生了什么 存储单个磁道 并存储单个播放事件 但是当我执行var tracks=myDbContext.tracks.ToList()时,Track的ICollection不会被填充 即使我使用myDbContext.Tracks.Add(track)保存;myDbContext.SaveChanges()其中track在ICollection 希望是轨道的相关部分 您的ICollection,这是您的导航属性,需要声明为v
- 存储单个
磁道
- 并存储单个
播放事件
- 但是当我执行
var tracks=myDbContext.tracks.ToList()时,
的Track
不会被填充代码>ICollection
- 即使我使用
myDbContext.Tracks.Add(track)保存;myDbContext.SaveChanges()代码>其中
在track
ICollection
您的
ICollection
,这是您的导航属性,需要声明为virtual
对代码的另一个建议是不要为导航属性显式声明getter和setter,而是将setter的职责转移到构造函数。使您的代码如下所示:
public class Track
{
public Track()
{
this.PlaybackEvents = new HashSet<PlaybackEvent>();
}
// Primary key
public string Id {get; set;}
// Navigation property
public virtual ICollection<PlaybackEvent> PlaybackEvents { get; private set; }
}
你看到数据库中的数据了吗?解决方案!我将确保1)在构造函数中初始化ICollection 2)在两个中声明导航属性3)将导航属性声明为虚拟。p、 查看PlaybackEvents表,我看到两个字段,一个称为Track_Id,另一个称为Track_Id1,但它们都有相同的值,不确定为什么会有这样的重复。。
public class PlaybackEvent {
public string Id {get; set;}
public string Track_Id { get; set; }
}
public class Track
{
public Track()
{
this.PlaybackEvents = new HashSet<PlaybackEvent>();
}
// Primary key
public string Id {get; set;}
// Navigation property
public virtual ICollection<PlaybackEvent> PlaybackEvents { get; private set; }
}
public class PlaybackEvent
{
// Primary key
public string Id {get; set;}
// Foreign key
public string Track_Id { get; set; }
// Navigation property
public virtual Track Track { get; set; }
}