Мое приложение - это настройка клиент-сервер, где клиент запрашивает серверы для объектов в данном регионе. Он отправит координаты сервера x и y и радиус. Затем сервер должен запросить базу данных SQL Server для объектов в указанном регионе. В базе данных объекты хранятся по координатам x и y.Простые процедуры в Linq To SQL
Сначала я пробовал метод contains
в объекте Region
, переданном серверу через WCF. Ну, конечно, это не сработало, потому что он не смог преобразовать метод в T-SQL. Но я видел простые выражения лямбды используются в запросах LINQ, поэтому я попытался это:
Func<UniverseStationaryObject, RegionLocation, bool> contains =
(universeObject, location) => Math.Sqrt(
Math.Pow(universeObject.locationX - location.x, 2) +
Math.Pow(universeObject.locationY - location.y, 2)
) <= location.radius;
var objects = from o in dataContext.UniverseStationaryObjects
where contains.Invoke(o, Location)
select o;
К сожалению, это не сработало - Я читал, что некоторые функций разрешены в Linq для запросов SQL , но я думаю, что математические функции не среди них? Мне нужна хранимая функция для этого? Как выглядит хранимая функция (я никогда не писал ее в T-SQL)? Могу ли я передавать объекты C# в функции и не извлекать каждое значение для перехода на сервер db? Я имею в виду, когда я добавляю хранимые функции в конструктор классов linq-to-sql, могу ли я заставить его принять объект и извлечь значения в этот момент?
Обратите внимание, что это не возможность извлекать каждый объект и фильтровать их на C#.
ооо, круто :) к сожалению, я пошел вперед и узнал, как сделать хранимую функцию уже :(, но я собираюсь попробовать это слишком –