Linq2sql наследование приведения - PullRequest
0 голосов
/ 19 февраля 2009

Я использую наследование в linq2sql и имею права Поставщика и Покупателя, которые наследуются от Клиента. Мне нужно, чтобы я мог «обновить» Покупателя до Поставщика.

Я пробовал:

        Client client = ClientMethods.ValidateId<Client>(clientId);
        client.ClientTypeId = ClientMethods.CLIENT_TYPE_SUPPLIER;
        db.SubmitChanges();

Но получить «Не разрешено: изменение дискриминатора наследования с« 1 »на« 2 »приведет к изменению типа с« Покупатель »на« Поставщик »."

Единственное решение, которое я могу найти, это сделать это без linq2sql и написать SP ??

Ответы [ 3 ]

1 голос
/ 20 февраля 2009

Мне интересно, почему у вас даже есть два разных подкласса, если это естественная ситуация, которую вы хотите изменить с одного типа на другой. Я думаю, что вы должны провести рефакторинг того, что у вас есть, и сделать покупателя и поставщика единым целым. Тогда, если у вас есть поведение, которое должно отличаться в зависимости от того, является ли клиент покупателем или поставщиком, я бы выделил это в отдельный объект, который вы можете установить или добавить клиенту.

1 голос
/ 22 декабря 2010

У меня была та же проблема, и я решил ее), удвоив поле дискриминатора в один вычисляемый столбец, который фактически используется в качестве значения дискриминатора, и целочисленный столбец, в котором хранится значение ...

*) - одно из известных решений, которое может иметь неприятные побочные эффекты, поэтому будьте осторожны

0 голосов
/ 19 февраля 2009

Возможно, попытаться создать нового поставщика, указав значение свойства покупателя?

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