2015-04-02 3 views
1

Я долго искал способы хранения CLR-типов, таких как IPEndPoint, в базе данных с Entity Framework 6. В моем специальном случае у меня есть дочерний класс IPEndPoint, добавляющий некоторые свойства (ExtendedIPEndPoint).Как хранить такие типы, как IPEndPoint с Entity Framework 6

Обычно это должен быть обычный вариант использования, но я действительно не мог найти объяснения, как это сделать. Теоретически это тихо, для хранения просто возьмите свойство IPAddress и сопоставьте его с String, а затем возьмите свойство Port и сопоставьте его с целым числом. Чтобы загрузить ExtendedIPEndPoint, просто создайте новый объект, используя конструктор, и дополнительные методы, такие как IPAddress.Parse, для разбора IPAddress из сохраненной строки.

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

ответ

1

В конечном счете вам нужно хранить данные, необходимые для создания типа, который вы хотите представлять.

IPEndPoint С имеет constructor с IPAddress и int, вы должны быть в состоянии хранить эти ценности. Так так как IPAddres также не тип SQL, нам нужны данные для constructor для этого тоже:

public class MyClass 
{ 
    public byte[] IPAddressData { get; set; } 
    public int Port { get; set; } 

    private IPAddress _IPAddress; 
    [NotMapped] 
    public IPAddress IPAddress 
    { 
     get 
     { 
      if(_IPAddress == null) 
       _IPAddress = new IPAddress(IPAddressData); 
      return _IPAddress; 
     } 
    } 

    private IPEndPoint _IPEndPoint 
    [NotMapped] 
    public IPEndPoint IPEndPoint 
    { 
     get 
     { 
      if(_IPEndPoint == null) 
       _IPEndPoint = new IPEndPoint(IPAddress, Port); 
      return _IPEndPoint; 
     } 
    } 

} 
+0

я бы не использовать этот конструктор ... Вы ограничиваете его IPv4 (* адрес меньше чем 0 или больше 0x00000000FFFFFFFF *). – xanatos

+0

. Я только что взял первый конструктор, который увидел, я посмотрю еще один – DLeh

Смежные вопросы