soo*_*mon 7 c# sql-server entity-framework code-first entity-framework-6
我正在学习C#,对于网络扫描项目,我想将IP地址保存为我的SQL Server的二进制文件,因为这似乎是"最佳"解决方案.
但由于我很新,我对如何告诉EF6这样做非常困惑.
我想IPAddress
在我的代码中使用变量类型,但EF会将其保存为BIGINT
我的数据库(使用代码优先).
我想我可以使它成为一个byte []并使用getter和setter来将二进制转换为该IPAddress
类型?
或者我可以告诉它使用BINARY
数据注释吗?我还需要手动进行转换吗?
有人可以为我澄清一下吗?
因为我会将大量IP保存到数据库中,所以我希望以尽可能最好的方式保存它们.
非常感谢!
Rag*_*iga 12
IP v4地址是4个字节,IP v6地址是16个字节,因此将它们存储为varbinary(16)字段.我从您的问题标签中看到您正在使用.Net,因此您可以使用IPAddress.GetAddressBytes()轻松获取这些字节.使用Entity Framework时,以下代码将非常有用.
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Net;
[Required, MinLength(4), MaxLength(16)]
public byte[] IPAddressBytes { get; set; }
[NotMapped]
public IPAddress IPAddress
{
get { return new IPAddress(IPAddressBytes); }
set { IPAddressBytes = value.GetAddressBytes(); }
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1415 次 |
最近记录: |