none
Проблема заполнения таблицы MS Sql 2008 содержащую тип HierarchyId RRS feed

  • Вопрос

  • Добрый день, изучаю основы работы с типом HierarchyId (MS SQL 2008) в среде  Visual Studio 2010 (RC). Создал БД и таблицу с полями:  IdUrovniaKatHerakl - HierarchyId (not null primary key),
    KatName nvarchar(max) not null,
    LevelKat as RowId.GetLevel()
    KatId - int
    KatOpisanie nvarchar(max)
    в студии подключился к этой таблице БД через dataset(TableAdapter). В документации приводится много примеров на sql. Нашел пример добавления записей в таблицу используя sql:
    DECLARE @Manager hierarchyid
    SELECT @Manager = hierarchyid::GetRoot()
    FROM HumanResources.EmployeeOrg ;

    INSERT HumanResources.EmployeeOrg (OrgNode, EmployeeID, EmpName, Title)
    VALUES
    (@Manager.GetDescendant(NULL, NULL), 46, 'Sariya', 'Marketing Specialist') ;
    Как можно реализовать это на языке С#?
    Попробовал:
    DataSet1 ds = new DataSet1();
            DataSet1TableAdapters.KategoriiFotoTableAdapter kategoriiFotoTableAdapter = new DataSet1TableAdapters.KategoriiFotoTableAdapter();
            DataSet1.KategoriiFotoRow newKategoriiFotoRow = ds.KategoriiFoto.NewKategoriiFotoRow();
             SqlHierarchyId her;
              SqlHierarchyId gt =  SqlHierarchyId.Null;

              newKategoriiFotoRow.IdUrovniaKatHerakl = (her.GetDescendant(gt,null));
               newKategoriiFotoRow.KatName = TextBox1.Text;
        newKategoriiFotoRow.KatOpisanie = "'eto opisanie";
            
        ds.KategoriiFoto.Rows.Add(newKategoriiFotoRow);

        kategoriiFotoTableAdapter.Update(ds.KategoriiFoto);

    Но выдает ошибку в строке "newKategoriiFotoRow.IdUrovniaKatHerakl = (her.GetDescendant(gt,null));"
    Заранее благодарю за ответ и приношу извинения за возможные неточности в формулировке вопросса (новичок в этом деле).
    С уважением Роман
    • Перемещено I.Vorontsov 17 марта 2010 г. 7:57 (От:Visual C#)
    • Перемещено Tagore Bandlamudi 2 октября 2010 г. 0:30 MSDN Forums consolidation (От:SQL Server для разработчиков)
    15 марта 2010 г. 20:49

Ответы

  • Чесно говоря, всегда логику работы с HierarchyId делал в хранимках (LINQ to SQL и Entity Framework не поддерживают этот тип). Но смотрите, здесь вы инициализируете переменную значением SqlHierarchyId.Null

    SqlHierarchyId gt =  SqlHierarchyId.Null;

    а потом вы передаёте просто null:

    newKategoriiFotoRow.IdUrovniaKatHerakl = (her.GetDescendant(gt,null));

    попробуйте вот так:

    newKategoriiFotoRow.IdUrovniaKatHerakl = (her.GetDescendant(gt,SqlHierarchyId.Null));


     

    • Помечено в качестве ответа I.Vorontsov 22 марта 2010 г. 8:21
    17 марта 2010 г. 8:45