ASP.NET Core MVC: Создать сообщение, связанное с автором, ранее созданное в другом представлении

У вас есть вложенные синхронизированные {} конструкции в двух местах. Эти конструкции кажутся чем-то странным: нить не реагирует на уведомления вообще и только возобновляется, когда ThreadB (b) завершается. Удалить это:

public class JavaApplication2 {
    public static void main(String[] args) {
        ThreadB b = new ThreadB();
        b.start();
        try {
            System.out.println(" ### Waiting for notify");
            synchronized (b) {
                b.wait();
            }
            System.out.println(" ### Notified");
        } catch (InterruptedException e) {
        }
        System.out.println("### Total is: " + b.total);
    }
}

class ThreadB extends Thread {
    int total;

    @Override
    public void run() {
        total += 1;
        System.out.println(" *** Ready to notify in 5 secs");
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
        }
        System.out.println(" *** Notification sent");
        synchronized (this) {
            notify();
        }
        System.out.println(" *** 5 sec post notification");
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
        }
        System.out.println(" *** ThreadB exits");
    }
}

Возможно, что код выше работает корректно: при уведомлении () текущий основной поток возобновляется через 5 секунд и до того, как мы увидим сообщение, которое ThreadB завершает. С notify () закомментировал, что основной поток возобновляется через 10 секунд и после сообщения о прекращении ThreadB, потому что notify () вызывается anywhay из другого кода. Марко Тополник объясняет, почему и откуда происходит этот вызов «за сценой» notify ().

0
задан Ayod Arune 12 March 2019 в 08:44
поделиться

2 ответа

EF Core поможет заполнить значение столбца идентичности после функции SaveChangesAsync. Например:

Author.cs:

public class Author
{
    public int AuthorId { get; set; }
    public string AuthorName { get; set; }

    public List<BlogPost> BlogPosts { get; set; }
}

BlogPost.cs:

[111 ]

При создании действия автора EF Core поможет заполнить AuthorId после сохранения:

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("AuthorId,AuthorName")] Author author)
{
    if (ModelState.IsValid)
    {
        _context.Add(author);
        await _context.SaveChangesAsync();

        //here you will get id
        var id = author.AuthorId;

        //redirect to another action with parameter 
        return RedirectToAction(nameof(Index),new { id=id});
    }
    return View(author);
}

Затем вы будете перенаправлены на другое действие / представление с параметром, как показано в коде выше.

0
ответ дан Nan Yu 12 March 2019 в 08:44
поделиться

«Но я еще не знаю ID, потому что он генерируется EF. И я не знаю, как его передать».

author.Author = "AuthorName";

db.SaveChanges ();

int id = author.AuthorId;

[ 114] затем передайте его:

RedirectToAction ("BlogPostView", "Controller", id);

0
ответ дан user123456789 12 March 2019 в 08:44
поделиться
Другие вопросы по тегам:

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