0
我想保存和使用代码优先的方法数据库加载分层数据。加载分层对象与实体框架6
我的对象:
public class Database
{
public int ID { get; set; }
public string name { get; set; }
public virtual List<ElementBase> elements { get; set; }
private string XMLpath;
}
public abstract class ElementBase : ObservableObject
{
[Key]
public int ID { get; set; }
public string name { get; set; }
public ElementBase() { }
public ElementBase(String name)
{
this.name = name;
}
}
public class Element : ElementBase
{
protected string type;
public virtual List<ElementBase> elements { get; set;}
}
public class Attribute : ElementBase
{
private string value;
private byte editable;
}
我的目标 “数据库” 包含 “ElementBase” 的列表。 “ElementBase”构建在组合模式上。
在我的方面,我只有“数据库”。
public DbSet<NWViewer.Model.Database> Databases { get; set; }
我保存数据库,在SQLServer这样:
public static void add(NW.Database db)
{
using (var dbContext = new DatabaseContext())
{
dbContext.Databases.Add(db);
dbContext.SaveChanges();
}
}
它在服务器上创建一个数据库和ElementBase表:
最后当我尝试得到一个数据库,它只检索第一个子元素的数据库:
public static NW.Database update (NW.Database db)
{
using (var dbContext = new DatabaseContext())
{
var originalDB = (from d in dbContext.Databases
where d.ID == db.ID
select d).First();
dbContext.Entry(originalDB).CurrentValues.SetValues(db);
dbContext.SaveChanges();
return originalDB;
}
}
,当它试图获得的第一个元素的孩子的错误:
消息“乐JEU德entites的OU L'进口德fonction 'Element_elements' n'est PASdéfini丹斯乐conteneur d'Entités 'DatabaseContext'。 。Rapprochéidentificateur地方丹斯UNE序列 D'échappement,LIGNE 1,Colonne的73”字符串
DAV