[英]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
具有帶有IPAddress
和int
的構造函數 ,因此您需要能夠存儲這些值。 因此,由於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.