Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wcf Can';无法将关联对象正确添加到实体框架上下文中_Wcf_Entity Framework_Wcf Data Services_Odata - Fatal编程技术网

Wcf Can';无法将关联对象正确添加到实体框架上下文中

Wcf Can';无法将关联对象正确添加到实体框架上下文中,wcf,entity-framework,wcf-data-services,odata,Wcf,Entity Framework,Wcf Data Services,Odata,我通过数据服务公开了实体和框架项目: public class VersionContext : DbContext { public DbSet<VersionTreeEntry> VersionTreeEntries { get; set; } public DbSet<PluginState> PluginStates { get; set; } public static void SetForUpdates() {

我通过数据服务公开了实体和框架项目:

public class VersionContext : DbContext
{
    public DbSet<VersionTreeEntry> VersionTreeEntries { get; set; }

    public DbSet<PluginState> PluginStates { get; set; }

    public static void SetForUpdates()
    {
        Database.SetInitializer(new MigrateDatabaseToLatestVersion<VersionContext, Configuration>());
    }
}

public class VersionTreeEntry
{
    public VersionTreeEntry()
    {
        Children = new List<VersionTreeEntry>();
        PluginStates = new List<PluginState>();
    }

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long Id { get; set; }

    public virtual ICollection<VersionTreeEntry> Children { get; set; }

    public virtual ICollection<PluginState> PluginStates { get; set; }

    public virtual VersionTreeEntry Ancestor { get; set; }

    /// <summary>
    /// Links to the ProtoBufDataItem Id for the session state.
    /// </summary>
    public int DataId { get; set; }

    public string Notes { get; set; }

    [Required]
    public DateTime TimeStamp { get; set; }

    [MinLength(1, ErrorMessage = "Tag cannot have a zero length")]
    [MaxLength(20, ErrorMessage = "A tag name cannot contain over 20 characters")]
    public string Tag { get; set; }

    public bool IsUiNodeExpanded { get; set; }

    [Required]
    public string Version { get; set; }

    [Required]
    public string SessionName { get; set; }
}

public class PluginState
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long Id { get; set; }

    public string PluginName { get; set; }

    [Required]
    public byte[] Data { get; set; }
}
问题是PluginState实例从未真正添加到数据库中。如果我添加代码以手动将它们添加到上下文中,它们确实会被添加,但是指向VersionTreeEntry的外键为null

再说一次,这是一个WCF数据服务,而不是普通的EF,你知道有什么问题吗


干杯

将评论部分的答案张贴在这里

同意。最好的方法是调用以下API:

_versionContext.AddRelatedObject(versionTreeEntry, "PluginStates", state); 
谢谢
Pratik

在调用add方法-\u versionContext.AddLink(versionTreeEntry,“PluginStates”,state)之后,能否在forloop中的代码中添加以下行。希望这有帮助。谢谢普拉蒂克。听起来像是对我的回答:)我也可以用_versionContext.AddRelatedObject(versionTreeEntry,“PluginStates”,state)替换这两行;
_versionContext.AddRelatedObject(versionTreeEntry, "PluginStates", state);