У меня есть таблица в Oracle. Эта таблица имеет среди других: EMPLOYEE_ID (NUMBER, Nullable, но число NULL равно 0) и EMPLOYEE_NUMBER (VARCHAR2, Nullable, но число NULL равно 0).Столбец с нулевым значением и столбцом с нулевым значением в представлении
Теперь я создаю взгляд на эту таблицу:
CREATE OR REPLACE FORCE VIEW APPS.XXKE_L2E_EMPLOYEE
(
PERSON_ID,
EMPLOYEE_NUMBER,
...
)
AS
SELECT EMPLOYEE_ID,
EMPLOYEE_NUMBER,
...
FROM xxke.xxke_employees e
INNER JOIN xxke.xxke_organizations o ON e.organization_id = o.organization_id
INNER JOIN xxke.xxke_operating_units ou ON e.org_id = ou.org_id;
ALTER VIEW APPS.XXKE_L2E_EMPLOYEE
ADD CONSTRAINT XXKE_L2E_EMPLOYEE_V_PK
PRIMARY KEY(PERSON_ID) DISABLE;
Как на земле возможно, что в этой точке зрения person_id становится Nullable (даже при использовании NVL трюк), но EMPLOYEE_NUMBER является НЕ Nullable
ВОПРОС: Как я могу сделать Oracle, чтобы создать представление в пути, так что колонна person_id становится не Nullable в представлении? Или как я могу заставить мою службу WCF oData запрашивать это представление. В настоящее время после обновления файла edmx я получаю следующее:
Ошибки: Oracle.ssdl (227,6): ошибка 0075: Ключевая часть: «PERSON_ID» для типа XXKE_L2E_EMPLOYEE недопустим. Все части ключа должны быть недействительными.
Может ли это быть причиной того, что вы используете NVL на одном из столбцов, а не на otehr? – Limey
Вы позволили вашему возмущению встать на путь предоставления четкого вопроса. Пожалуйста, объясните, что на самом деле происходит, и сделайте так, как вам понравится. – APC
То же самое с NVL или без него. Более того, это то, что я получаю, когда пытаюсь получить доступ к представлению из Entity Framework, после обновления edmx: Указанная схема недействительна. Ошибки: Oracle.ssdl (227,6): ошибка 0075: ключевая часть: «PERSON_ID» для типа XXKE_L2E_EMPLOYEE недействителен. Все части ключа должны быть недействительными. Наилучшая часть заключается в том, что в VS2010 этот столбец автоматически устанавливается в не-nullable и помечен как PK ... –