我在这里发现了很多类似的问题,但他们都没有帮我解决我的问题。流利的api &属性没有帮助。该数据库已创建,但向其中添加对象时,该数据库已崩溃。 我想要一个拥有自己集合的类。下面的代码我有:代码优先 - 自引用一对多关系
[Table("UObjects")]
public class UObject
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Browsable(false)]
public long ID { get; set; }
public string Name { get; set; }
[Browsable(false)]
public long? ParentID { get; set; }
public virtual UObject UParent { get; set; }
[Browsable(false)]
public virtual ICollection<UObject> UObjects { get; set; }
}
public class MyContext : DbContext
{
public DbSet<UObject> UObjects { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// This fluent API didn't help
//modelBuilder.Entity<UObject>()
// .HasOptional(u => u.UParent)
// .WithMany(u => u.UObjects)
// .HasForeignKey(u => u.ParentID);
//modelBuilder.Entity<UObject>()
// .HasOptional(u => u.UParent)
// .WithMany(u => u.UObjects)
// .Map(c =>
// {
// c.MapKey("ParentID");
// c.ToTable("UObjects");
// });
}
}
记录在数据库中是这样的:
ID | Name | ParentID
------------------------------------
1 | First | 0
2 | SubFirst | 1
3 | SubSecond | 1
4 | SubThird | 2
5 | SubFourth | 2
所以我的目标应该是什么样子加载实体后下一:
- First
- SubFirst
- SubThird
- SubFourth
- SubSecond
但每一个对象有一个空集合。我该怎么做才能使它正常工作?
检查此问题http://stackoverflow.com/questions/10421351/many-to-many-relationship-between-entities-of-same-type-in-mvc3/10422172#10422172 – Shyju
已经尝试过。它创建了数据库,但是当添加新对象并调用SaveChanges() – GaaRa
“*它崩溃*”时,它崩溃并不是一个很好的问题描述。 1)确切的例外是什么? 2)当你使用空集合加载实体时,你运行了什么查询? 3)为什么在第一个数据库行中有'ParentID'为'0'?它违反了参考约束(没有'ID' 0的行)。或者你的意思是'NULL'? – Slauma