2010-07-28 3 views
0

Приветствия,Многие из многих таблиц в Структуре ENtity

Мне тяжело работать с инфраструктурой Entity ADO.NET. Я хочу сделать связь между двумя существующими элементами в таблице «Множество-много».

Пример:

create table A(key int, value varchar(10)); 
create table B(key int, value varchar(10)); 

create table A_B(keyA int, keyB int);-- those are FK.. 

Теперь я хочу, чтобы сделать связь между ними, в Entitie Framework, Я попытался

A_B ab=new A_B{a=new A{key=1},b=new B{key=2}} 

Но я получаю 2 новых элементов в A и B.

Как я могу это сделать?

Спасибо заранее

ответ

1

Там должно быть 2 лица в вас модель class A и class B. Каждый из них имеет свойство навигации, содержащее коллекцию другого типа.

Так что вы можете сделать, как этот

var a = new A(); 
var b = new B(); 

a.CollectionOfB.Add(b); 

или

b.CollectionOfA.Add(a); 
+0

Это не решит его проблему. Он по-прежнему будет помещать два новых объекта в таблицу A и B вместо использования существующих объектов. –

1

Самый простой способ заключается в загрузке сущности:

A_B ab = new A_B{a= Context.As.Single(a => a.key=1), Context.Bs.Single(b => b.key=2)}; 

Однако разработчики, которые хотели бы преждевременно оптимизировать часто боятся, что служебные издержки 2 чтения БД подавят их приложение и попытаются использовать объекты-заглушки. Когда вы сделаете это, вы должны прикрепить их к контексту:

var a = new A{key=1}; 
Context.AttachTo("As", a); 
var b = new B{key=2}; 
Context.AttachTo("Bs", b); 
A_B ab = new A_B{a = a, b = b}; 

EF 4 позволяет сделать это без строки, используя CreateObjectSet.

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