【发布时间】:2021-01-29 10:26:05
【问题描述】:
在实体框架中,我有一个 DBGeography 对象:
using System.Data.Entity.Spatial;
...
public DbGeography Location { get; set; }
由于我还没有发现通过 JSON 发送 POINT 对象的更好方法,我打算从我的 Javascript 代码中发送“lat”和“lng”字符串值,并在 POST 期间在服务器上使用它们方法:
public async Task<IHttpActionResult> PostI4Item(myEntity item)
{
var lat = (VALUE TO BE SOURCED);
var lng = (VALUE TO BE SOURCED);
string Point = String.Format("POINT({0} {1})", lat, lng);
item.Location = DbGeography.PointFromText(Point, 4326);
myEntity current = await InsertAsync(item);
return CreatedAtRoute("Tables", new { id = current.Id }, current);
}
问题是我不知道如何检索发送到 POST 的值,这些值在数据模型中是不期望的。 item.Location 是可访问的,因为它已被声明。但是,即使我在 'lat' 和 'lng' 的正文中发送额外的键/值对,我如何才能在代码中发现这些值?我不能使用item.lat 和item.lng,因为它们没有被声明,而且我不希望这些值有额外的数据库列...我只希望它们被接受为输入,而不是保存。
数据模型中是否有一个方法可以声明一个值(可能是只读的或内部的),该值在请求中预期并可在 POST 方法中使用,但实际上并未保存到我的数据库中?
【问题讨论】:
-
我找到了这个答案,并相信它最初可能解决了问题stackoverflow.com/questions/33792793/…,但我很快意识到,在刷新数据库后,它只是为纬度和经度创建了额外的列......我希望通过仅在计算 Point() 对象后存储 DBGeography 值来避免。
标签: c# asp.net-web-api entity-framework-6 dbgeography