.NET Core 2.2 - Entity Framework - Пользовательское назначение [NotMapped] атрибута модели с DbSet.FromSql () - PullRequest
0 голосов
/ 16 октября 2019

У меня есть проект API .NET Core 2.2. Я пытаюсь настроить класс EF Model с настраиваемыми атрибутами, которые не отображаются непосредственно в поля таблицы: обычно будет NULL, но в одном отдельном экземпляре будет назначаться пользователем.

Вот (концептуально) моя модель:

public class SomeObject {
    [Key]
    public int ID { get; set; }

    [NotMapped]
    public string CustomField1 { get; set; }
    [NotMapped]
    public string CustomField2 { get; set; }
}

В другом месте кода у меня есть то, что по существу составляет это:

return SomeObjects
            .FromSql($@"select *, <custom mapping here> as CustomField1, <custom mapping here> as CustomField2 from [table name]")

Я надеялся, что картографЯ бы просто понял это на основе сопоставления имен полей, но это не сработало.

В качестве альтернативы, я надеялся на что-нибудь, метод map() в Ruby on Rails или Laravel,где я мог бы сделать что-то вроде этого:

return SomeObjects
            .FromSql($@"select *, <custom mapping here> as CustomField1, <custom mapping here> as CustomField2 from [table name]")
            .Map( o => { o.CustomField1 = CustomField1, o.CustomField2 = CustomField2 });

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

Мысли?

1 Ответ

1 голос
/ 16 октября 2019

Попробуйте определить подтип с дополнительными свойствами CustomFieldX, которые наследуются от типа сущности SomeObjects, чтобы использовать общие свойства и сопоставления. Я ненавижу жесткий код SQL (побеждает одну из основных целей ORM) и предпочел бы представление или хранимую процедуру, с которой вы можете затем сопоставить подтип.

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