1
我想創建我的第一個EF代碼第一個對象到數據庫中。不幸的是,當試圖將我的對象保存到數據庫中時,我得到以下異常:實體框架代碼與自引用對象的第一個錯誤
無法確定依賴操作的有效順序。 由於外鍵約束, 需求或商店生成的值,可能會存在依存關係。
這裏是我用來填充數據庫的代碼:
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'這裏'公共虛擬節點父{獲得;組; }'? –