Entity framework ctp UPDATE
От: Аноним  
Дата: 02.11.10 22:00
Оценка: 2 (1)
Привет!
Использую EntityFramework ctp 4.
Есть POCO Client и City со связью один-ко-многим


public class Client:INotifyPropertyChanged
{
public int ClientId{get;set;}
public String FirstName{get;set;}
public String LastName{get;set;}
public City City{get;set;}
}

public class City:INotifyPropertyChanged
{
public int CityId{get;set;}
public String Name{get;set;}
}


Создаю для них конфигурации
class ClientConfiguration : EntityConfiguration<Client>
    {
        public ClientConfiguration()
        {
            Property(c => c.ClientId).IsIdentity();
            MapSingleType(c => new
            {
                c.ClientId,               
                CityId = c.City.CityId,                
            }).ToTable("Clients");          
        }
    }
 class CityConfiguration: EntityConfiguration<City>
    {
        public CityConfiguration()
        {
            Property(c => c.CityId).IsIdentity();         
            MapSingleType(c => new
                                   {
                                       c.CityId,
                                       c.Name
                                   }).ToTable("Cities");
        }
    }      
}

Далее строю модель


            _modelBuilder = new ModelBuilder();
            _modelBuilder.Configurations.Add(new ClientConfiguration());
            _modelBuilder.Configurations.Add(new CityConfiguration());
            _dbModel = _modelBuilder.CreateModel();



Наследуюсь от ObjectContext

 public class MyContext : ObjectContext
    {
      ............... 
        private void Init()
        {            
            _cities = CreateObjectSet<City>(); 
            _clients = CreateObjectSet<Client>();                
        }

        private ObjectSet<City> _cities;
        public ObjectSet<City> Cities
        {
            get 
            { 
                return _cities; 
            }
        }


        private ObjectSet<Client> _clients;
        public ObjectSet<Client> Clients
        {
            get
            {
                return _clients;
            }
        }


Контекст создаю так

            var val = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
            _connection = new SqlConnection(val);
            _context = model.DbModel.CreateObjectContext<MyContext>(_connection);


Получаю список клиентов через байндинг в WPF форме меняю значения клиента и хочу обновить

 _context.Context.Clients.Attach(client);                
 _context.Context.ObjectStateManager.ChangeObjectState(client, EntityState.Modified);                
 _context.Context.SaveChanges();


Значения полей без связи (например FistName, LastName) обновляются нормально, но если установить city то не обновляется.
в чем ошибка?
P.S. Сейчас посмотрел City вообще не выставляется в Clientе, даже если есть в базе.
спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.