Вдобавок ко всему, я думаю, что следующий подход может работать с EF:
- Давайте добавим столбец GUID к вашей модели и базе данных, но в вашем отображении EF сделайте егополучить и установить методы доступа частные или защищенные соответствующим образом.
- Добавьте 2 неявных преобразования в ваш пользовательский класс: одно для преобразования из GUID в экземпляр класса и одно для преобразования из экземпляра класса в GUID (см.ниже, подробнее об этом).
- Создайте частичный класс для класса модели, который предоставляет открытое свойство пользовательского типа, а в методах получения и установки просто перейдите к частному / защищенному свойству GUID (которое выВы сможете сделать это благодаря реализации неявных преобразований).
Насколько EF знает, у вас просто есть это свойство Guid
, но насколько ваша модель знает, когда выкодируете, у вас просто есть свойство настраиваемого типа.
Чтобы создать неявные преобразования:
public class MyClass
{
public Guid Key { get; set; }
public static implicit operator Guid(MyClass c)
{
return c.Key;
}
public static implicit operator MyClass(Guid g)
{
return new MyClass { Key = g; }
}
}