I'm working on a new website that's using entity framework.
Using code from another site, that was linq to sql, I have a database function to calculate distance from one set of latitude and longitude to another set. And the function returns a decimal with the distance.
I've added to my identitymodel.cs in the ApplicationDbContext class:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
public ObjectResult<int> getDistance(string lat1, string lon1, string lat2, string lon2)
{
var params1 = new[] {
new ObjectParameter("lat1", lat1),
new ObjectParameter("lon1", lon1),
new ObjectParameter("lat2", lat2),
new ObjectParameter("lon2", lon2)
};
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<int>("LatLonRadiusDistance", params1);
}
}
And this is my query:
var datap = (from p in db.table
where db.LatLonRadiusDistance(data.lat, data.lon, p.platitude, p.plongitude) <= 10
select new latlon
{
lat = p.property_lat,
lon = p.property_lon,
address = p.property_address,
id = p.property_id,
count = ecount
}).Take(500);
However now I'm getting an error:
The FunctionImport 'LatLonRadiusDistanceVarchar' could not be found in the container 'ApplicationDbContext'.
What am I doing wrong?