Добавить не сопоставленное свойство к сущности 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 частями.