У меня есть класс linq to sql с несколькими привязанными к таблице свойствами, но я хочу добавить другой, который вычисляется из более сложного запроса.
Есть ли способ добавить свойство, содержащее пользовательский код SQLсохраняя эффективность?
public class Region
{
string Name {get ;set;}
DateTime Founding {get; set;}
int CivilWarCasualties
{
get
{
// Scalar SQL code that returns an int
}
}
}
Вот как я сейчас это делаю (пожалуйста, не обращайте внимания на схему, и я создал ее на лету).Не хватает отношений один-к-одному, чтобы сделать это без объединения, и это, очевидно, усложняет ситуацию.Я использую это большое соединение в нескольких местах и хочу упростить его:
using (Context db = new Context())
{
var q = (from r in db.GetTable<Region>()
join b in db.GetTable<Battles>() join s.ID equals b.RegionID
join s in db.GetTable<Soldier>() join s.LastBattleID equals b.ID
join p in db.GetTable<Person>() join p.ID equals s.PersonID
where !p.IsAlive
select new {r, p})
.GroupBy(x => x.Name)
.Select(x=> new {x.Key.r.Name, x.Where(y => y.Key = x.Key).Count());
}
Вот как я хочу это сделать:
using (Context db = new Context())
{
var q = (from r in db.GetTable<Region>()
select new {r.Name, r.CivilWarCasualties})
}
Я в основном хочу написать вручнуюSQL-код для этого большого сложного объединения, описанного выше (что я, вероятно, не понял правильно, потому что я это создаю, как я в качестве примера).
Я пытаюсь избежать ошибки «без перевода в SQL», которая возникает, если я пытаюсь создать свойство в C #.Я также открыт для других идей.