Linq к SQL без явных отношений внешнего ключа

Из Java 8 и далее нам не нужно напрямую использовать Collections.sort(). Интерфейс List имеет метод по умолчанию sort():

List users = Arrays.asList(user1,user2,user3);
users.sort( (u1, u2) -> { 
return u1.getFirstName.compareTo(u2.getFirstName());}); 

См. http://visvv.blogspot.in/2016/01/sorting-objects-in-java-8. HTML .

14
задан madcolor 6 March 2009 в 19:00
поделиться

7 ответов

Вернитесь к разработчику и проверьте, что отношение настраивается правильно. Вот один реальный пример, с BillStateMasters имеют свойство "CustomerMasters1" (клиенты для состояния): alt text

именование ps очищается...

Обновление 1: также необходимо удостовериться, что обеим таблицам определили основное устройство. Если первичный ключ не определяется на базе данных (и не может быть определен по любой причине), удостоверьтесь, что определили их в разработчике. Откройте свойства столбца и установите его как первичный ключ. Тем не менее объект, отслеживающий также, не будет работать, если у Вас не будет первичного ключа для объекта, который для удаляет средства, которые он тихо не делает обновляет объект. Так, удостоверьтесь, что рассмотрели все объекты и имели их всех с первичным ключом (как я сказал, если это не может быть на дб, затем на разработчике).

26
ответ дан 1 December 2019 в 08:53
поделиться
CasesDataContext db = new CasesDataContext();
var Cases = from c in db.Cases
            join ci in db.CaseInfo on
            ci.ID equals c.InfoID
            where ci.CaseInfoMeta == "some value"
            select new {CASE=c, INFO=ci};

мое "соединение" linq немного ржаво, но вышеупомянутое должно быть рядом с тем, что Вы после.

5
ответ дан 1 December 2019 в 08:53
поделиться

Ассоциация установлена на Одну Одной или Одной Многим? Если Вам установили ассоциацию на Одну Многим, то то, что Вы имеете, является EntitySet, не EntityRef, и необходимо будет использовать, где пункт на зависимом установил для получения правильного значения. Я подозреваю, что Вы хотите Связь "один к одному", которая не является значением по умолчанию. Попытайтесь изменить его на Один Одному и посмотрите, можно ли создать запрос.

Примечание: я просто предполагаю, потому что Вы на самом деле не сказали нам, какова "проблема" на самом деле.

0
ответ дан 1 December 2019 в 08:53
поделиться

Ваша корректная внешность запроса и должна возвратить набор результата запроса объектов Случая.

Так... в чем проблема?

(Редактирование) Моя проблема, являющаяся, что CaseInfo не доступен под Случаями... т.е. c. CaseInfo не существует, где я предполагаю, что это было бы, если бы были явные основные отношения / отношения внешнего ключа.

, Под чем Вы подразумеваете "не доступный"? При создании ассоциации в разработчике, поскольку Вы говорите, что сделали, то запрос должен генерировать SQL что-то вроде

SELECT [columns] 
FROM Case INNER JOIN CaseInfo 
   ON Case.CaseID = CaseInfo.CaseID
WHERE CaseInfo.CaseInfoMeta = 'some value'

, Вы отладили свой запрос linq для генерирования SQL уже? Что это возвращает?

0
ответ дан 1 December 2019 в 08:53
поделиться

После нескольких тестов я вполне уверен, отношения FK требуются в DB независимо от любых ассоциаций, создаются в Linq к SQL. т.е. если Вам не установили их явно в DB, тогда необходимо будет сделать соединение вручную.

0
ответ дан 1 December 2019 в 08:53
поделиться

Несколько вещей Вы могли бы хотеть попробовать:

Проверка свойства ассоциации. Удостоверьтесь, что свойство Parent было создано как Общественность. Это делает это по умолчанию, но что-то, возможно, изменилось.

, Так как Вы не получаете CaseInfo на C, попытайтесь ввести его другое направление, чтобы видеть, получаете ли Вы ci. Случай с intellisense.

Удаляют и воссоздают ассоциацию все вместе.

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

, Если все остальное перестало работать, переключатель к NHibernate.:)

0
ответ дан 1 December 2019 в 08:53
поделиться

Этот c#? Я думаю, что Вам нужно == вместо = на этой строке:

where c.CaseInfo.CaseInfoMeta = "some value"

должен читать

where c.CaseInfo.CaseInfoMeta == "some value"
0
ответ дан 1 December 2019 в 08:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: