Tôi đã tìm thấy rất nhiều câu hỏi tương tự ở đây, nhưng không có câu hỏi nào trong số đó dường như giúp tôi giải quyết vấn đề của mình. Thuộc tính api & không giúp ích gì. Cơ sở dữ liệu đã được tạo ra, nhưng khi thêm một đối tượng vào nó, nó đã bị hỏng. Tôi muốn có một lớp học có một bộ sưu tập của chính nó. Dưới đây là đoạn code tôi có:Mã Đầu tiên - Tự tham khảo một đến nhiều mối quan hệ
[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");
// });
}
}
Đĩa hát trong cơ sở dữ liệu là như thế này:
ID | Name | ParentID
------------------------------------
1 | First | 0
2 | SubFirst | 1
3 | SubSecond | 1
4 | SubThird | 2
5 | SubFourth | 2
Vậy làm thế nào đối tượng của tôi nên xem xét sau khi tải các đối tượng là tiếp theo:
- First
- SubFirst
- SubThird
- SubFourth
- SubSecond
Nhưng mọi đối tượng có một bộ sưu tập trống. Tôi nên làm gì để nó hoạt động bình thường?
kiểm tra http://stackoverflow.com/questions/10421351/many-to-many-relationship-between-entities-of-same-type-in-mvc3/10422172#10422172 – Shyju
đã thử điều này rồi. Nó tạo ra cơ sở dữ liệu nhưng nó đổ vỡ khi thêm đối tượng mới và gọi SaveChanges() – GaaRa
"* nó bị hỏng *" không thực sự là một mô tả vấn đề tốt. 1) Ngoại lệ chính xác là gì? 2) Bạn đã chạy truy vấn nào khi bạn nạp các thực thể với các bộ sưu tập rỗng? 3) Tại sao bạn có một 'ParentID' của' 0' trong hàng cơ sở dữ liệu đầu tiên? Nó vi phạm ràng buộc tham chiếu (không có hàng nào có 'ID' 0). Hoặc bạn có nghĩa là 'NULL'? – Slauma