Звездный алгоритм с несколькими целями [дубликат]

Добавление случая, когда имя класса для объекта, используемого в структуре сущности, такое же, как имя класса для файла с кодировкой веб-формы.

Предположим, у вас есть веб-форма Contact.aspx, чей класс codebehind Свяжитесь с вами, и у вас есть имя объекта Contact.

Затем следующий код вызовет исключение NullReferenceException при вызове context.SaveChanges ()

Contact contact = new Contact { Name = "Abhinav"};
var context = new DataContext();
context.Contacts.Add(contact);
context.SaveChanges(); // NullReferenceException at this line

Ради полноты класса DataContext

public class DataContext : DbContext 
{
    public DbSet Contacts {get; set;}
}

и класс сущности контакта. Иногда классы сущностей являются частичными классами, так что вы можете распространять их и в других файлах.

public partial class Contact 
{
    public string Name {get; set;}
}

Ошибка возникает, когда оба класса entity и codebehind находятся в одном и том же пространстве имен. Чтобы исправить это, переименуйте класс сущности или класс codebehind для Contact.aspx.

Причина. Я все еще не уверен в причине. Но всякий раз, когда какой-либо из классов сущностей расширяет System.Web.UI.Page, возникает эта ошибка.

Для обсуждения рассмотрим NullReferenceException в DbContext.saveChanges ()

6
задан ThereIsElse 26 December 2011 в 19:29
поделиться

3 ответа

Сколько голов, десятков или тысяч? Если десятки вашего пути будут работать нормально, если тысячи, то поиск ближайшего соседа даст вам идеи по быстрой настройке ваших данных.

Компромиссы очевидны, пространственно упорядочивая ваши данные для поиска потребуется время, а на небольших наборах грубая сила будет проще поддерживать. Поскольку вы постоянно оцениваете, я считаю, что структурирование данных будет стоить при очень низком числе точек.

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

7
ответ дан svick 26 August 2018 в 23:16
поделиться

Используйте алгоритм Дейкстры, который имеет минимальную стоимость для всех достижимых точек. Затем вы просто выбираете точки цели с выхода.

0
ответ дан Brian Minton 26 August 2018 в 23:16
поделиться

Во-первых, решите, нужно ли вам оптимизировать, потому что любая оптимизация усложнит ваш код и для небольшого количества целей ваше текущее решение, вероятно, отлично подходит для простой эвристики, такой как расстояние Манхэттена.

Прежде чем сделать первый шаг, вычислите эвристику для каждой цели. Помните ближайшую цель как выбранную цель и двигайтесь к ней, но вычтите максимально возможный прогресс по отношению к любой цели со всех остальных расстояний. Вы можете считать это второе значение «метаэвристическим»; это оптимистичная оценка эвристики для других целей.

На последующих шагах вычислите эвристику для текущей цели и любые цели с «метаэвристикой», которая меньше или равна эвристике. Другие цели не могут быть лучше эвристики, поэтому вам не нужно их вычислять. Ближайшей целью станет новая текущая цель; двигайтесь к нему, вычитая максимально возможный прогресс от других. Повторяйте, пока не достигнете цели.

1
ответ дан erickson 26 August 2018 в 23:16
поделиться
Другие вопросы по тегам:

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