最初のEFコードの最初のオブジェクトをデータベースに作成しようとしています。残念ながら、私のオブジェクトをDBに保存しようとすると、例外が発生します。エンティティフレームワーク自己参照オブジェクトの最初のエラーコード
従属操作の有効な順序を判断できません。 外部キー制約、モデル 要件、またはストア生成値のために依存関係が存在する可能性があります。ここで
私はDBを埋めるために使用するコードです:
using (var context = new MySample.Context())
{
context.Database.CreateIfNotExists();
CloudFile f = new CloudFile(, "file1");
CloudDirectory d = new CloudDirectory(CloudObject.CloudContentType.Customer, "directory1");
d.Nodes.Add(d);
FileGroup g = new FileGroup();
g.CloudObjects.Add(d);
context.FileGroups.Add(g);
context.SaveChanges();
}
実際に私はタイプFileGroup
のオブジェクトを作成したいと思います。このオブジェクトには、ファイル(CloudFile
)またはディレクトリ(CloudDirectory
)が含まれています。ディレクトリには、他のディレクトリまたはファイルを含めることができます。ここで
上記目的のためのクラスです:
public class FileGroup {
public FileGroup()
{
CloudObjects = new HashSet<CloudObject>();
}
public int FileGroupId { get; set; }
public string Name { get; set; }
public virtual ICollection<CloudObject> CloudObjects { get; set; }
}
public abstract class CloudObject {
public CloudObject(string name)
{
Name = name;
}
public int CloudObjectId { get; set; }
public string Name { get; set; }
public abstract bool hasChildren { get; }
public int? ParentId { get; set; }
public virtual Node Parent { get; set; }
public int? FileGroupId { get; set; }
public virtual FileGroup FileGroup { get; set; }
}
public class CloudDirectory : CloudObject {
public CloudDirectory(string name) :base(name)
{
Nodes = new HashSet<CloudObject>();
}
public override bool hasChildren
{
get
{
return Nodes.Any();
}
}
public virtual ICollection<CloudObject> Nodes { get; set; }
}
public class CloudFile : CloudObject {
public CloudFile(string name) : base(name)
{
}
public string ETag { get; set; }
public override bool hasChildren
{
get
{
return false;
}
}
}
は、私は、彼らが成功したDBを行う保存することができるように、私のオブジェクトに変更する必要があるか任意のアイデア?テストコードで
Node'ここで 'パブリック仮想ノードの親が{取得'何ですが。セット; } '? –