在MongoDB中使用POCO,在空间索引中使用Entity框架

时间:2014-07-01 16:05:52

标签: c# sql entity-framework mongodb mongodb-.net-driver

外部库中有几个类具有Coordinate属性,有时需要在MongoDB中存储,有时在SQL Server中,理想情况下是空间索引,而不必修改类。

MongoDB使用以下代码在Coordinate属性上创建地理空间球形索引没有问题:

var collection = _database.GetCollection<SomeClass>("SomeCollection")
collection.CreateIndex(IndexKeys<SomeClass>.GeoSpatialSpherical(x => x.Coordinate));

根据文档,它将在封面下创建GeoJson点。然后我可以查询对象:

var point = GeoJson.Point(GeoJson.Geographic(coordinate.Longitude, coordinate.Latitude));
var geoClause = Query<SomeClass>.Near(x => x.Coordinate, point, distance);
return collection.AsQueryable().Where(x => geoClause.Inject())

但是,对于SQL Server和EF,空间索引需要DbGeography属性。

如果有一个扩展点用于将对象映射到EF中的SQL数据类型,那么会有什么好处,但谷歌搜索没有返回类似内容。这样的事情存在吗?

我考虑过一个通用的包装类,但是EF不支持泛型,因此也不是一个选项,我不想为每个类创建一个包装器。

我是扩展课程的唯一选择吗?

0 个答案:

没有答案