在SQL Server [... with Entity Framework]中存储IPv6地址

时间:2014-01-18 20:56:15

标签: vb.net sql-server-2008 ipv6 biginteger entity-framework-6

尝试在代码中使用IPv6地址,使用EF6进行持久化。

实体框架6似乎不像.NET BigIntegers。在代码优先的情况下,如果您尝试使用以下方法添加迁移:

Public Property StartBigInt As BigInteger 

您将获得以下内容:

  

属性'StartBigInt'不是'AssignmentIPV6'类型的声明属性。使用Ignore方法或NotMappedAttribute数据批注验证是否未从模型中显式排除该属性。确保它是有效的原始属性。

因此代码优先不满意将BigInteger映射到SQL Server bigint类型。

我是在叫错树吗?有没有更好的方法在SQL Server中存储IPv6地址,以便对它们进行相对快速的数学计算?

每行保存一个地址范围(使用开始和停止地址),因此匹配只询问给定地址是否在每个开始和放大器内。停止一行的列。

EF6中的代码优先让我这么好,但现在我有点蠢,而且我怀疑我试图使用BigInt/BigInteger代表SQL Server {{ 1}}列实际上可能不是使用IPv6地址的最佳方式。

你们有什么人使用这些128位地址?

P.S。我有VB功能扩展&压缩IPv6地址,如果它们可以对任何人使用。我计划扩展压缩地址,转换为bigint,然后保留在SQL Server 2008 R2中。现在我不太确定我做的是正确/最好的事情!

0 个答案:

没有答案