Я дополнительное поле в моей модели под названием StatusChange, это заполняется с использованием sproc для извлечения всех полей из таблицы, а также дополнительного StatusChange поляEntity Framework: Игнорирование поля на Insert только
SELECT New.*, [dbo].[ftn_GetStatusChange](Old.MemberStatusId, New.MemberStatusId) AS StatusChange
FROM Member New
LEFT OUTER JOIN Member Old ON New.MemberNo = Old.MemberNo AND Old.ImportHistoryID = @ImportIdToCompare
WHERE New.ImportHistoryID = @NewestImportId
Вот функция
CREATE FUNCTION [dbo].[ftn_GetStatusChange]
(
@OldStatus char,
@NewStatus char
)
RETURNS int
AS
BEGIN
IF (@OldStatus IS NULL)
BEGIN
RETURN 1
END
IF (@OldStatus = 'R')
BEGIN
IF @NewStatus = 'C' RETURN 5
IF @NewStatus = 'S' RETURN 4
END
IF (@OldStatus = 'C')
BEGIN
IF @NewStatus = 'R' RETURN 3
IF @NewStatus = 'S' RETURN 4
END
IF (@OldStatus = 'S')
BEGIN
IF @NewStatus = 'C' RETURN 5
IF @NewStatus = 'R' RETURN 3
END
RETURN 0
END
Это перечисление, что номера карты для
public enum StatusChange
{
NoChange = 0,
New = 1,
Current = 2,
Resigned = 3,
Suspended = 4,
Reinstated = 5,
}
В таблице базы данных не имеют поля StatusChange хотя, поскольку нет никакой необходимости в этом, поэтому я попытался добавить атрибут Рассчитанный свойству в C#
Это C# код
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public StatusChange StatusChange { get; set; }
Однако, когда я звоните SaveChanges() на DbContext я получаю ошибку
Invalid column name 'StatusChange'.
есть в любом случае я могу иметь это свойство для SELECT, только и игнорировать его на INSERT?
Можете ли вы добавить атрибут '[NotMapped]' к свойству? Или это также приведет к тому, что свойство не будет установлено при загрузке? – Patrick
Я пробовал это, но затем SPROC, выполняющий SELECT, игнорирует свойство StatusChange. – Coesy
взглядом этого вам нужно будет изменить свой дизайн, чтобы сделать эту работу. Не можете ли вы использовать [NotMapped] и получить нужную информацию, а затем выполнить StatusChange отдельно. Например, просто укажите поле в списке Old.MemberStatusId, New.MemberStatusId и во время выполнения конвертируйте в состояния, – Seabizkit