Re[2]: Linq with BLToolkit
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 28.02.10 14:06
Оценка:
Здравствуйте, Plotyan, Вы писали:

P>Можно ли задать параметры ассоциаций и наследования через XML схему маппинга?


Да.
... << RSDN@Home 1.2.0 alpha 4 rev. 1464 on Windows 7 6.1.7600.0>>
AVK Blog
Re[3]: Linq with BLToolkit
От: Plotyan Россия  
Дата: 28.02.10 14:51
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Plotyan, Вы писали:


P>>Можно ли задать параметры ассоциаций и наследования через XML схему маппинга?


AVK>Да.


Где-нибудь можно почитать о том, как это сделать?
Re[4]: Linq with BLToolkit
От: Овощ http://www.google.com
Дата: 28.02.10 15:14
Оценка:
Здравствуйте, Plotyan, Вы писали:

P>Где-нибудь можно почитать о том, как это сделать?


Наверно можно создать собственного наследника класса BLToolkit.Reflection.MetadataProvider.MetadataProviderBase (например по аналогии с LinqMetadataProvider) и там уже брать параметры маппинга и конфигурации откуда захочется и как захочется.
Re[10]: Linq with BLToolkit
От: IT Россия linq2db.com
Дата: 28.02.10 17:21
Оценка:
Здравствуйте, ili, Вы писали:

ili>то с приведенного запроса он тоже выберется, его создание я могу разрулить IObjectFactory,


По идее с этим механизмом ничего разруливать не надо. Оно там само.

ili>но св-во SomeValue будет незаполненным?


Должно быть заполненным.
Если нам не помогут, то мы тоже никого не пощадим.
Re[10]: Linq with BLToolkit
От: IT Россия linq2db.com
Дата: 28.02.10 17:23
Оценка:
Здравствуйте, Plotyan, Вы писали:

IT>>должен вернуть объекты не родительского типа, а наследников.


P>Хм, тут не понял. Если Product — это базовый класс, то тут два варианта:

P> 1. запрос возвращает все записи, включая всех наследников, в виде Product.
P> 2. запрос возвращает только объекты класса Product, без наследников.

P>В первом случае все хорошо, а во втором да, нужно знать обо всех наследниках, чтобы их не выбрать. Но вроде первый вариант более логичен?


Запрос должен вернуть объекты, типы которых соответствуют описании иерархии. Но в данном случае это описание можно взять только у Product, больше негде.
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Linq with BLToolkit
От: IT Россия linq2db.com
Дата: 28.02.10 17:25
Оценка:
Здравствуйте, Plotyan, Вы писали:

P>Можно ли задать параметры ассоциаций и наследования через XML схему маппинга?


В смысле задать атрибуты? По-моему, пока нет. Тем не менее, задавать поля/свойсва для ассоциаций всё равно придётся.
Если нам не помогут, то мы тоже никого не пощадим.
Re[11]: Linq with BLToolkit
От: ili Россия  
Дата: 01.03.10 05:58
Оценка:
Здравствуйте, IT, Вы писали:

IT>Запрос должен вернуть объекты, типы которых соответствуют описании иерархии. Но в данном случае это описание можно взять только у Product, больше негде.


так вопрос скорее в том как узнавать.
отчего бы не вынести данное узнавание в метадата провайдер, в таком случае, кому надо, тот сможет припаивать свой код на этот предмет.
Re[3]: Linq with BLToolkit
От: Plotyan Россия  
Дата: 01.03.10 06:20
Оценка:
Здравствуйте, IT, Вы писали:

IT>Здравствуйте, Plotyan, Вы писали:


P>>Можно ли задать параметры ассоциаций и наследования через XML схему маппинга?


IT>В смысле задать атрибуты? По-моему, пока нет. Тем не менее, задавать поля/свойсва для ассоциаций всё равно придётся.


Я имел в виду определение маппинга через XML. BLToolkit вроде поддерживает не только атрибуты, но и XML, но здесь
Автор(ы): Игорь Ткачёв
Дата: 01.07.2003
В статье подробно рассматривается состав и способы применения пространства имён Rsdn.Framework.Data, представляющего собой высокоуровневую обёртку над ADO.NET.
явно устаревшая информация. Вопрос в том, как определить маппинг ассоциаций и наследования черех XML.
Re[4]: Linq with BLToolkit
От: IT Россия linq2db.com
Дата: 01.03.10 06:57
Оценка:
Здравствуйте, Plotyan, Вы писали:

P>Я имел в виду определение маппинга через XML. BLToolkit вроде поддерживает не только атрибуты, но и XML, но здесь
Автор(ы): Игорь Ткачёв
Дата: 01.07.2003
В статье подробно рассматривается состав и способы применения пространства имён Rsdn.Framework.Data, представляющего собой высокоуровневую обёртку над ADO.NET.
явно устаревшая информация. Вопрос в том, как определить маппинг ассоциаций и наследования черех XML.


Если честно, то я не помню сделал ли я поддержку XML или нет.
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: wiki
От: ili Россия  
Дата: 01.03.10 07:17
Оценка:
Здравствуйте, Plotyan, Вы писали:

P>Я имел в виду определение маппинга через XML. BLToolkit вроде поддерживает не только атрибуты, но и XML, но здесь
Автор(ы): Игорь Ткачёв
Дата: 01.07.2003
В статье подробно рассматривается состав и способы применения пространства имён Rsdn.Framework.Data, представляющего собой высокоуровневую обёртку над ADO.NET.
явно устаревшая информация. Вопрос в том, как определить маппинг ассоциаций и наследования черех XML.


лучше смотреть в вики, заодно и пополнять можно
Re[3]: Linq with BLToolkit
От: Овощ http://www.google.com
Дата: 01.03.10 09:11
Оценка:
Здравствуйте, IT, Вы писали:

IT>А как такое описание и такой запрос будет выглядеть в коде?


Вот например с базой Northwind. Есть там такие таблицы для связи many-to-many: "Employees" <- "EmployeeTerritories" -> "Territories".
Сейчас соответсвующие им классы в bltoolkit выглядят так (взял из unit-тестов):
[TableName("Employees")]
public class Employee
{
    [PrimaryKey, NonUpdatable]
    public int EmployeeID;

    [Association(ThisKey="EmployeeID", OtherKey="EmployeeID")]
    public List<EmployeeTerritory> EmployeeTerritories;
}

[TableName("EmployeeTerritories")]
public class EmployeeTerritory
{
    [PrimaryKey]
    public int    EmployeeID;

    [PrimaryKey, NotNull]
    public string TerritoryID;

    [Association(ThisKey="EmployeeID",  OtherKey="EmployeeID")]  public Employee  Employee;
    [Association(ThisKey="TerritoryID", OtherKey="TerritoryID")] public Territory Territory;
}

[TableName("Territories")]
public class Territory
{
    [PrimaryKey, NotNull]
    public string TerritoryID;

    [Association(ThisKey="TerritoryID", OtherKey="TerritoryID")]
    public List<EmployeeTerritory> EmployeeTerritories;
}


Таблица EmployeeTerritories в базе нужна — это понятно, но вот соответсвующий класс EmployeeTerritory, как мне кажется, выглядит несколько излишним.
Скажем в Entity Framework и в NHibernate есть нативная поддержка таких ассоциаций. Для них соответсвующие классы будут выглядеть как-то так (шаблонно):
public class Employee
{
    public int EmployeeID;
    public List<Territory> Territories;
}

public class Territory
{
    public string TerritoryID;
    public List<Employee> Employees;
}

Здесь коллекция Employee.Territories — это список самих территорий, с которыми связян данный сотрудник. А Territory.Employees — список всех сотрудников на данной территории. Промежуточного класса для их связи здесь нет (хотя конечно сама таблица связи где-то в настройках/конфигурации упоминается).

Наверно для bltoolkit можно реализовать нечто подобное, например, введя еще один атрибут ассоциации для связей many-to-many как-то так:
public class Employee
{
    public int EmployeeID;

    [ManyToManyAssociation(TableName="EmployeeTerritories", ThisKey="EmployeeID", OtherKey="TerritoryID")]
    public List<Territory> Territories;
}

public class Territory
{
    public string TerritoryID;

    [ManyToManyAssociation(TableName="EmployeeTerritories", ThisKey="TerritoryID", OtherKey="EmployeeID")]
    public List<Employee> Employees;
}


Linq-запросы к таким таблицам с использованием ассоциаций по идее должны остаться как и прежде. Только в случае если при разборе ET встречается упоминание такого вот свойства с соотвтевующей many-to-many-ассоциацией, то нужно будет генерировать еще один неявный джойн с неявно упоминаемой промежуточной таблицей (EmployeeTerritories).
Несколько сложнее будет придумать элегантное решение для создания/удаления связей между такими сущностями — просто из кода вставлять/удалять классы EmployeeTerritory в базу уже не получится (heavy-ORM здесь так или иначе используют паттерн unit-of-work).

Зачем все это надо? Ну лично мне было бы проще интегрировать bltoolkit в уже существующие приложения, или сочетать в одном приложении как bltoolkit, так и другие средства для работы с базой, или переходить с/на bltoolkit более "плавно".
Re[12]: Linq with BLToolkit
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 01.03.10 09:26
Оценка: 10 (1)
Здравствуйте, ili, Вы писали:

ili>отчего бы не вынести данное узнавание в метадата провайдер, в таком случае, кому надо, тот сможет припаивать свой код на этот предмет.


А оно разве сейчас не там?
... << RSDN@Home 1.2.0 alpha 4 rev. 1464 on Windows 7 6.1.7600.0>>
AVK Blog
Re[13]: Linq with BLToolkit
От: ili Россия  
Дата: 01.03.10 09:40
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, ili, Вы писали:


ili>>отчего бы не вынести данное узнавание в метадата провайдер, в таком случае, кому надо, тот сможет припаивать свой код на этот предмет.


AVK>А оно разве сейчас не там?


а, блин... кажись я ослеп GetInheritanceMapping я не увидел, только GetInheritanceDiscriminator заметил, ща перепроверил и нашел...
Re[4]: Linq with BLToolkit
От: IT Россия linq2db.com
Дата: 01.03.10 18:09
Оценка:
Здравствуйте, Овощ, Вы писали:

О>Зачем все это надо? Ну лично мне было бы проще интегрировать bltoolkit в уже существующие приложения, или сочетать в одном приложении как bltoolkit, так и другие средства для работы с базой, или переходить с/на bltoolkit более "плавно".


А если описание промежуточных сущностей всё же требовать, но иметь возможность обходится без них в запросе?
Если нам не помогут, то мы тоже никого не пощадим.
Re: Linq with BLToolkit
От: Димчанский Литва http://dimchansky.github.io/
Дата: 01.03.10 21:31
Оценка:
Что-то в последнее время у меня сайт bltoolkit.net загружается на 10-ый раз с дичайшими задержками и не полностью. Это у меня одного так?
Re[2]: Linq with BLToolkit
От: IT Россия linq2db.com
Дата: 01.03.10 21:39
Оценка:
Здравствуйте, Димчанский, Вы писали:

Д>Что-то в последнее время у меня сайт bltoolkit.net загружается на 10-ый раз с дичайшими задержками и не полностью. Это у меня одного так?


Я туда взгромоздил ScrewTuen Wiki, может быть по-этому.
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: Linq with BLToolkit
От: Димчанский Литва http://dimchansky.github.io/
Дата: 01.03.10 21:43
Оценка:
Здравствуйте, IT, Вы писали:

IT>Я туда взгромоздил ScrewTuen Wiki, может быть по-этому.


Ну вобщем ни побраузить, ни скачать что-либо не могу.
Re[4]: Linq with BLToolkit
От: IT Россия linq2db.com
Дата: 01.03.10 21:45
Оценка:
Здравствуйте, Димчанский, Вы писали:

IT>>Я туда взгромоздил ScrewTuen Wiki, может быть по-этому.

Д>Ну вобщем ни побраузить, ни скачать что-либо не могу.

http://bltoolkit.net/index.htm
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Linq with BLToolkit
От: IT Россия linq2db.com
Дата: 01.03.10 21:46
Оценка:
Здравствуйте, Димчанский, Вы писали:

IT>>Я туда взгромоздил ScrewTuen Wiki, может быть по-этому.

Д>Ну вобщем ни побраузить, ни скачать что-либо не могу.

Хотя, похоже хостер тормозит. В общем, надо переезжать.
Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: Linq with BLToolkit
От: Овощ http://www.google.com
Дата: 02.03.10 07:56
Оценка:
Здравствуйте, IT, Вы писали:

IT>А если описание промежуточных сущностей всё же требовать, но иметь возможность обходится без них в запросе?


Да, если я правильно все понял, то это будет наверно самым сбалансированным решением.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.