Доброго времени,
нельзя ли сделать чтоб старый добрый DataAccessor возвращал IQueryable,
например:
public abstract class PersonAccessor : DataAccessor
{
[SqlQuery("SELECT FirstName, Gender FROM Person WHERE PersonID=@personID")
public abstract IQueryable GetNameFenderById(int @personID);
}
sql соответсвенно брался из подготовленного SqlQuery?
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, cadet354, Вы писали:
C>>sql соответсвенно брался из подготовленного SqlQuery?
IT>Зачем?
устал бороться с ассоциациями, sql запрос я как-нибудь и сам напишу.
Здравствуйте, rameel, Вы писали:
R>Здравствуйте, cadet354, Вы писали:
C>>устал бороться с ассоциациями, sql запрос я как-нибудь и сам напишу.
R>использовать ассоциации ведь никто не заставляет, в чем сложность их не трогать там, где они мешаются?
сложность в определении когда они начнут мешаться, а когда нет.
Здравствуйте, cadet354, Вы писали:
R>>использовать ассоциации ведь никто не заставляет, в чем сложность их не трогать там, где они мешаются? C>сложность в определении когда они начнут мешаться, а когда нет.
Я к тому, что одно другому не мешает. Там, где возникают трудности с ассоциациями, строим запрос без них. Например, есть вот у нас такая табличка (примеры взяты из статьи: Linq-провайдер для BLToolkit)
[TableName("Categories")]
public class Category
{
[PrimaryKey, Identity] public int CategoryID;
[NotNull] public string CategoryName;
public string Description;
public Binary Picture;
[Association(ThisKey="CategoryID", OtherKey="CategoryID")]
public List<Product> Products;
}
Пробуем первый вариант
var q =
from p in db.Product
select new
{
p.Category.CategoryName,
p.ProductName
};
Допустим, что этот запрос гораздо сложнее, и с ассоциациями получается не так красиво как хотелось бы на самом деле, то здесь нам ни что не мешает использовать "старый добрый" linq
var q =
from c in db.Categories
join p in db.Products on c.CategoryID equals p.CategoryID
select new
{
с.CategoryName,
p.ProductName
};
Собственно, там где ассоциации не нужны или мешаются, просто не пользуемся. Все средства для этого есть.
Здравствуйте, rameel, Вы писали: R>Собственно, там где ассоциации не нужны или мешаются, просто не пользуемся. Все средства для этого есть.
какой получается sql вот в чем вопрос, так руками я уже понимаю что произойдет, написав linq надо потом смотреть а что в результате получилось, в статье приводятся такие примеры.
Есть и текущие проблемы реализации,например хранение byte[] сейчас неверное, если он null то sql строится как nvarchar() (хотя может в новой реализации уже это исправлено).
Здравствуйте, cadet354, Вы писали:
C>какой получается sql вот в чем вопрос, так руками я уже понимаю что произойдет, написав linq надо потом смотреть а что в результате получилось, в статье приводятся такие примеры.
Тогда для чего возвращать IQueryable в DataAccessor'е?
Здравствуйте, rameel, Вы писали:
R>Тогда для чего возвращать IQueryable в DataAccessor'е?
чтоб на каждый чих не делать DTO, часто нужно в репортинге или веб формах вывести некоторую выжимку, BL в которой 0.
Здравствуйте, cadet354, Вы писали:
R>>Тогда для чего возвращать IQueryable в DataAccessor'е? C>чтоб на каждый чих не делать DTO, часто нужно в репортинге или веб формах вывести некоторую выжимку, BL в которой 0.
А чем IEnumerable не устраивает?
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, cadet354, Вы писали:
IT>>IEnumerable<MyType> C>так весь разговор именно из-за того чтоб был анонимный класс и не писать InvoiceFormDTO and etc.
Можно пример как это могло бы выглядеть?
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
IT>Можно пример как это могло бы выглядеть?
да,я был не прав, видно динамика испортила меня , видимо без dynamic не выйдет каменный цветок.