Linq к Sql много-многие объединяющая таблица

Когда я проверяю CentOS 7, только текстовый режим, в VirtualBox я не вижу X после выполнения lsof / dev / input / event2 (клавиатура), но моя клавиатура все еще работает

blockquote>

Это потому, что вы используете виртуальную консоль , а затем одно из /dev/ttyN устройств. Они напрямую связаны с подсистемой входных событий Linux внутри самого ядра (с помощью модуля vt); по существу, все клавиатурные устройства действуют как входы для активного в данный момент виртуального терминала.

Сам X использует виртуальную консоль, просто чтобы ядро ​​могло переключаться между ней и любыми текстовыми виртуальными консолями.

Как насчет tty_open()?

blockquote>

Если вы запустите sudo lsof /dev/tty[0-9], вы увидите, какие процессы обращаются к виртуальной консоли.

Процессы с getty в названии являются теми, которые предоставляют терминалы входа. (Те, которые используются с последовательными терминалами, очень похожи; на самом деле, многие программы getty могут нормально обрабатывать как виртуальные консоли, так и последовательные терминалы.) Когда вы входите в систему, этот getty запускает login (программа!), Которая, в свою очередь, запускает оболочку по умолчанию, определенную для этого пользователя (см. getent passwd username; это последнее поле, и оно должно быть тем, которое указано в /etc/shells, чтобы быть разрешенным).

Само ядро ​​поддерживает переключение на другую виртуальную консоль с помощью Ctrl kbd> + Alt kbd> + Fn kbd> (F1 для tty1, F2 для tty2 и скоро). Если вы используете подходящие графические драйверы, вы даже можете переключаться между Xorg и виртуальными консолями. (Обычно Xorg запускается на tty6 или tty7, но это зависит от дистрибутива.) Ctrl kbd> + Alt kbd> + ← kbd> и > Ctrl kbd> + Alt kbd> + → kbd> также обычно можно использовать для переключения на предыдущую или следующую виртуальную консоль.

10
задан Bill 29 January 2009 в 16:12
поделиться

4 ответа

Используйте частичную реализацию класса для Книги и добавьте соответствующие методы для категорий и их свойств. Имейте фронтенд свойств свойство Books_Categories (можно заставить это иметь частную видимость для принуждения реализации через свойство Categories).

public partial class Books
{
    public IEnumerable<string> CategoryNames
    {
       get
       {  
            return this.Books_Categories
                       .Select( bc => bc.Category.category.Trim() );
       }
    }

    public void AddCategory( Category category )
    {
       this.Books_Categories.Add( new Book_Category
                                  {
                                      Category = category,
                                      Book = this
                                  } );
    }

    public void RemoveCategory( Category category )
    {
       var bc = this.Book_Categories
                    .Where( c => c.Category == category )
                    .SingleOrDefault();
       this.Books_Categories.Remove( bc );
    }
}

Очевидно, необходимо будет добавить некоторую ошибку/границы при проверке, и т.д. но Вы получаете идею.

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

8
ответ дан 4 December 2019 в 01:32
поделиться

Многие ко многим отображениям явно поддерживаются в Платформе Объекта, но не в LINQ к SQL. Можно также использовать сторонний ORMs, такой как NHibernate.

2
ответ дан 4 December 2019 в 01:32
поделиться

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

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

Человек, я действительно добрался для вхождения в направляющие...

0
ответ дан 4 December 2019 в 01:32
поделиться

Что вы можете сделать, если хотите создать книгу и напрямую хотите добавить к ней категорию: на ваш взгляд:

        <p>
            <label for="CategorySelect">Category:</label>
            <%= Html.ListBox("CategorySelect") %>
            <%= Html.ValidationMessage("CategorySelect", "*")%>
        </p>  

в вашем контроллере книг:

        public ActionResult New()
    {
            var data = _entities.Categories.ToList();
        ViewData["CategorySelect"] = new MultiSelectList(data, "Id", "Name");
}

        [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult New([Bind(Exclude = "Id")] Book Booknew)
    {
        IEnumerable<int> selectedCategories = Request["CategorySelect"].Split(new Char[] { ',' }).Select(idStr => int.Parse(idStr));

        if (!ModelState.IsValid)
            return View();

        try {
            foreach(var item in selectedCategories){
                BooksCategories bc = new BooksCategories();
                bc.Book = Booknew;
                bc.CategoryId = item;
                _entities.BooksCategories.InsertOnSubmit(bc);
            }
            _entities.Books.InsertOnSubmit(Booknew);
            _entities.SubmitChanges();
0
ответ дан 4 December 2019 в 01:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: