2

При создании отношения многих ко многим с использованием первого подхода к коду EF 4.3 я не могу сохранить данные в таблице соединений, также не может быть примеров того, как заполнить эту таблицу, используя сохранение объекта в Icollection ... Вот мой пример:Entity Framework 4.3 CF много-ко-многим связанным с сохранением объекту?

МОДЕЛИ

public class Hospital 
{ 
    //PK 
    [Key] 
    public int Id { get; set; } 

    public string Name { get; set; } 
    public string Address { get; set; } 
    public string City { get; set; } 
    public string County { get; set; } 
    public string UserName { get; set; } 
    public string Password { get; set; } 
    public Guid User_Id { get; set; } 

    //FK 
    public virtual ICollection<Operator> Operators { get; set; } 

} 

public class Operator 
{ 
    //PK 
    [Key] 
    public int Id { get; set; } 

    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public DateTime Dob { get; set; } 
    public string Email { get; set; } 

    //FK 
    public virtual ICollection<Hospital> Hospitals { get; set; } 
} 

public class Project: DbContext 
{ 
    public DbSet<Hospital> Hospitals { get; set; } 
    public DbSet<Operator> Operators { get; set; } 
} 

CONTROLLER

public void AddOperater() 
{ 

    Hospital h = new Hospital(); 
    h = db.Hospitals.Single(a=>a.Id ==1); 

    var o = new Operator(); 
    o.FirstName = "John"; 
    o.LastName = "Doe"; 
    o.Dob = new DateTime(1988,2,12); 
    o.Email = "[email protected]"; 
    o.Hospitals.Add(h); 

    db.SaveChanges(); 
} 

При таком подходе я держу получ Ошибка здесь: o.Hospitals.Add(h);, даже если мой экземпляр больницы заполнен данными. Как точно сохранить данные в обе таблицы, dbo.Operators и dbo.OperatorHospital, которая является таблицей отношений?

ответ

3

o.Hospitals.Add (h) завершится с ошибкой, потому что список является нулевым списком. Вы не можете вызвать Add() в нулевом списке. Как правило, большинство людей обходит это, создавая экземпляр списка в конструкторе объекта ... например ... текущая строка взрывается из-за проблемы CSharp.

public class Hospital 
{ 
    //PK 
    [Key] 
    public int Id { get; set; } 

    public string Name { get; set; } 
    public string Address { get; set; } 
    public string City { get; set; } 
    public string County { get; set; } 
    public string UserName { get; set; } 
    public string Password { get; set; } 
    public Guid User_Id { get; set; } 

    //FK 
    public virtual ICollection<Operator> Operators { get; set; } 

    public Hospital() 
    { 
     Operators = new List<Operator>(); 
    } 

} 


public class Operator 
{ 
    //PK 
    [Key] 
    public int Id { get; set; } 

    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public DateTime Dob { get; set; } 
    public string Email { get; set; } 

    //FK 
    public virtual ICollection<Hospital> Hospitals { get; set; } 

    public Operator() 
    { 
     Hospitals = new List<Hospital>(); 
    } 

}

+0

Спасибо, теперь работает отлично! –

 Смежные вопросы

  • Нет связанных вопросов^_^