Добавить не сопоставленное свойство к сущности EF5

Я использую EF5 для создания модели из существующей структуры БД. Я сопоставляю Вставить / Обновить / Удалить Хранимые Процедуры с сущностями. Это работает нормально.

Далее я хотел бы передать UserId этим SP в качестве параметра, но не иметь UserId в качестве столбца в базовой таблице (SP будут использовать этот параметр). У меня много сущностей. Можно ли как-то добавить свойство, которое всегда будет добавлено обратно даже после обновления модели из БД?

Большое спасибо

2 ответа

Объекты, созданные EF, являются частичными классами, поэтому вы можете расширить этот класс с помощью пользовательских свойств.

YourEntity.cs //created by EF

public partial class YourEntity
{

    public string Name { get; set; }
    ...
}

YourEntityExtended.cs // created by you

public partial class YourEntity
{

    public int Id { get; set; }       
}

Если вы используете EDMX для генерации объектной модели Entity Framework, ваши классы являются частичными, и вы можете добавить свойства к частичным классам ваших объектов, которые выживут при регенерации базы данных.

Если у вас есть таблица ParticularEntity в БД и на которую есть ссылка в EDMX, вы можете добавить частичный файл класса ParticularEntity.Augments.cs (имя для вашей справки, и вы можете иметь кратные, как обычно, с частичными классами) для вашего проекта и в нем

public partial class ParticularEntity
{
    public string UserId { get; set; }
    public void DoSomething(string userId)
    {
        someFunctionThatYouWantToNotBeAnExtension();
    }
}

В качестве альтернативы вы можете написать набор методов расширения, которые используют ваши карты. Я не думаю, что это так же чисто, как расширение классов EF частями.

Другие вопросы по тегам