C #: получить объект Linq из ключа - PullRequest
0 голосов
/ 10 апреля 2011

Я использую LINQ to SQL, и мне интересно, есть ли кратчайший путь к этому синтаксису:

using (Model db = new Model())
{
    LinqObj l = db.LinqObj.Where(o => o.ID = id).Single();
}

Я знаю, что мог бы просто создать статический метод, который возвращает объект LinqObj:

public static LinqObj FromID(int id)
{
    using (Model db = new Model())
    {
        return LinqObj l = db.LinqObj.Where(o => o.ID = id).Single();
    }
}

Что заставило меня задуматься;Есть ли способ создать конструктор, который возвращает объект:

LinqObj l = new LinqObj(ID: 7);

Каков наилучший способ создания объекта из одной строки в объекте LINQ to SQL?

Ответы [ 3 ]

0 голосов
/ 10 апреля 2011

Я думаю, что самое простое, что нужно сделать, - это создать методы, помогающие создавать или извлекать нужные вам данные, как пример статического метода.Вы могли бы расширить свой класс и поместить логику в конструктор для некоторого поиска, но я не уверен, что это чистый способ сделать это.

0 голосов
/ 10 апреля 2011

Что не так с:

dataContext.LinqObjs.Single(x => x.Id = 23);

?Он очень удобочитаемый, и он, очевидно, правильно повторно использует существующий DataContext.Это плохая практика - создавать DataContext для каждого получаемого вами объекта.Больно вручную повторно прикреплять их, и если вы этого не сделаете, вы не можете добавить один объект в свойства контейнера другого.

0 голосов
/ 10 апреля 2011

У вас может быть служебный метод для шаблона LINQ to SQL:

static T GetObject<T>(Func<Model, T> func)
{
   using(var db = new Model()) return func(db); 
}

А затем просто сделайте это:

var l = GetObject(db => db.LinqObj.Single(o => o.ID == id));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...