Linq to sql. Стол со многими ко многим - PullRequest
0 голосов
/ 09 декабря 2010

Я создавал приложение для кинофильмов, чтобы управлять актерами или «Талантами».У меня есть стол TALENT и стол ЯЗЫКОВ.У меня также есть таблица TALENTLANGUAGES, которая показывает отношение многих ко многим между ними.

Вот SQL, который я могу написать, чтобы показать разные языки, на которых говорит данный талант.в моем приложении C # я использую Linq для классов SQL.Как я могу сделать приведенный выше код с linq to sql.Спасибо.

Ответы [ 2 ]

0 голосов
/ 09 декабря 2010

Ремус, думаю, я сам на это отвечу, потому что это такое чистое решение.Проверьте это ...

var languages = from tl in talentDB.TalentLanguages
                where tl.TalentID == id
                select new { lang = tl.Language.Name, tal_id = tl.TalentID };  // could get more values if needed..

foreach (var l in languages)
{
    string language = l.lang;
    string talentID = l.tal_id; 
    // etc...
}

Это очень круто!Линк присоединился ко мне !!

0 голосов
/ 09 декабря 2010

Вот один из способов сделать это:

Начните с создания объекта «результаты», который будет содержать необходимую информацию в одном объекте. Давайте назовем это «TalentLanguagesContainer»

public class TalentLanguagesContainer
{
    public int TalentID { get; set; }
    public string FirstName { get; set; }
    public int LanguageID { get; set; }
    public string LanguageName { get; set; }
}

Затем создайте оператор Select, который соответствующим образом отобразит ваши потребности:

public IQueryable < TalentLanguagesContainer > GetTalentLanguages()
{           
       MyDataContext _dataContext = new MyDataContext();

       return _dataContext.TalentLanguages
                  .Where(t => t.TalentID == 10000)
                  .Select(tl => new TalentLanguagesContainer() {
                             TalentID = tl.TalentID,
                             FirstName = tl.Talent.FirstName,
                             LanguageID = tl.LanguageID,
                             LanguageName = tl.Language.Name });
}

Кроме того, вы можете подумать о написании хранимых процедур для более сложных сценариев, таких как этот - вы можете найти сценарий SQL, который будет выполняться быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...