2009-07-01 3 views
0

У меня есть модель данных ADO .Net Entity для моей базы данных. В этой модели у меня есть три связанные таблицы: Таблица «Пользователи», содержащая UserId и другие данные. Таблица «Run», который содержит RunID, ApproverId и другие детали «RunToUser», который содержит UserId и столбцы RunIDСвязывание множественных отношений с EntityDataSource

Отношения заключаются в следующем: Users.UserId является отношение один к одному к Run.ApproverId пользователя. UserId много для многих с помощью RunToUser.UserId Run.RunId - это многого для многих с RunToUser.RunId

В модели сущности это выражается в виде двух таблиц с двумя отдельными отношениями. отношения «один-к-одному» и отношения «многие-ко-многим» между «Пользователи» и «Выполнить».

У меня есть форма представления ASP.net, где я хочу редактировать данные в Run, а также соответствующие данные в Users.

В большинстве случаев обработка данных работает. Однако, когда я привязываюсь к таблице Users как entitydatasource, он всегда использует взаимно-однозначную ассоциацию отношений.

Как я могу заставить entitydatasource использовать определенную ассоциацию отношений, чтобы я мог привязывать данные от сопоставления «один-к-одному» к метке и много-ко многим в dataview?

Я попробовал «СУЩЕСТВУЮЩИЕ» в предложении where, которое ограничивает записи, но по-прежнему настаивает на том, чтобы всегда использовать взаимно однозначное и отображать только одного пользователя во всех элементах управления данными. Вот EntityDataSource для пользователей:

<asp:EntityDataSource ID="edsUsers_DET" runat="server" 
     ConnectionString="name=MyEntities" DefaultContainerName="MyEntities" 
     EntitySetName="Users" 
     Where="EXISTS(SELECT VALUE p FROM it.Run AS p WHERE p.RunID = @RunID)" > 
     <WhereParameters> 
      <asp:ControlParameter ControlID="fvRun" Name="RunID" Type="Int32" /> 
     </WhereParameters>   
    </asp:EntityDataSource> 

Я предполагаю, что я буду нуждаться в двух источников данных Entity один для метки и второй для GridView, но пока я знаю, определить, как specifiy ассоциации я не знаю, как продолжить. Thx, -J

ответ

3

Просто после того, как я нашел ответ и забыл закрыть вопрос.

Я обнаружил, что, когда у вас есть несколько ассоциаций с одной и той же внешней таблицей, они по умолчанию получают числовой суффикс. Итак, в таблице Run были пользователи и ассоциация Users1. Когда вы используете параметр «Включить» для EDS, вам нужно знать, какую ассоциацию использовать, что не очевидно, пока вы не заглянете в модель EDS.

Я подумал, что переименован во все мои ассоциации, в которых были числовые суффиксы. В таблице «Мой запуск» теперь есть ассоциация «Пользователи» и «Утверждение» (вместо «Пользователи1»). Это позволяет мне легко расшифровать, какие отношения поставляться для включения как для LINQ, так и для декларативных частей EDS.

Если бы я хотел включить обе ассоциации для СЭД, я бы сделал что-то вроде:

Include="Users,Approver" 

Надежда это помогает кому-то еще, так как это не было очень очевидно для меня в первую очередь.

0

Если у вас есть отношения «один к одному» в вашей базе данных, вы можете создать свою модель сущности, чтобы эти две таблицы отображались как одна таблица в вашей модели сущности.

Если вы построите это, ваше связывание станет намного проще.

+0

Я не уверен, что понимаю, у вас есть пример? – Jay

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