簡體   English   中英

如何使用Entity Framework 6存儲IPEndPoint之類的類型

[英]How to store types like IPEndPoint with Entity Framework 6

我一直在尋找很長一段時間,以了解如何在帶有Entity Framework 6的數據庫中存儲IPEndPoint之類的CLR類型。在我的特殊情況下,我有一個IPEndPoint的子類,添加了一些屬性(ExtendedIPEndPoint)。

通常,這應該是一個常見的用例,但是我真的找不到任何解釋。 從理論上講,這很簡單,只需存儲IPAddress屬性並將其映射為String,然后第二次使用Port屬性並將其映射為整數即可。 要加載ExtendedIPEndPoint,只需使用構造函數和其他方法(如IPAddress.Parse)創建一個新對象,以從存儲的字符串中解析出IPAddress。

我聽說過復雜的類型,存儲過程和代理,但是我真的不知道如何使用它們,如果這些是要搜索的正確單詞,在哪里有很好的解釋。

最終,您只需要存儲構建您要表示的類型所需的數據。

由於IPEndPoint具有帶有IPAddressint構造函數 ,因此您需要能夠存儲這些值。 因此,由於IPAddres也不是SQL類型,因此我們也需要用於構造函數的數據:

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;
        }
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM