Много ко многим таблицам в ENtity Framework - PullRequest
0 голосов
/ 28 июля 2010

Привет,

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

Пример:

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.

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

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 28 июля 2010

Простой способ загрузить объекты:

A_B ab = new A_B{a= Context.As.Single(a => a.key=1), Context.Bs.Single(b => b.key=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.

1 голос
/ 28 июля 2010

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

Таким образом, вы можете сделать это

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

 a.CollectionOfB.Add(b);

или

 b.CollectionOfA.Add(a); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...