Я новичок в EF 4, и это то, что я сделал до сих пор:
- Создать файл edmx на основе моей базы данных
- Создать генерацию кода для моих объектов (POCO). Теперь у меня есть model1.tt, когда развернут, я вижу все свои классы
- Создать репозиторий для каждого класса на основе IRepository
Теперь я работаю с двумя объектами, A и B. Объект A имеет свойство типа B. В моей winform форме у меня есть комбо, заполненное объектами типа B. Когда нажата кнопка сохранения, новый экземпляр Класс A создан, и все свойства установлены. Свойство объекта B устанавливается следующим образом:
objectA.myObjectB = (objectB)cmbBObjects.selectedItem;
Затем я создаю хранилище для objectA и вызываю метод save. В этом методе сохранения у меня есть этот код ±
public bool Save(ObjectA obj)
{
using(MyContext context = new MyContext())
{
context.objectAs.AddObject(obj);
context.SaveChanges();
}
}
Этот код сохраняет новую запись в базе данных, но он также создает новую запись для объекта B! Я не хочу этого, потому что объект B уже существует в базе данных! (Я выбрал этот в выпадающем списке).
Вот как я заполняю свой комбинированный список:
В хранилище objectB:
public IList<ObjectB> GetAll()
{
using(MyContext context = new MyContext())
{
IList<ObjectB> objects = context.objectBs.ToList();
return objects;
}
}
В моем виде:
ObjectBRepository rep = new ObjectBRepository();
IList<ObjectB> objects = rep.GetAll;
cmbBObjects.Datasource = objects;
// etc..
Итак, мой вопрос: что мне нужно сделать, чтобы сохранить объект A без создания новой записи для объекта B?