Добавление случая, когда имя класса для объекта, используемого в структуре сущности, такое же, как имя класса для файла с кодировкой веб-формы.
Предположим, у вас есть веб-форма 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 ()
.*
.
- любой символ, *
означает повторяющееся ноль или более раз.
Вы можете использовать это регулярное выражение (любые пробелы или любые небелые пробелы) как можно дольше и вплоть до 0.
[\s\S]*
Это выражение будет соответствовать как можно меньше, но как многие, необходимые для остальной части выражения.
[\s\S]*?
Например, в этом регулярном выражении [\s\S]*?B
будет соответствовать aB
в aBaaaaB
. Но в этом регулярном выражении [\s\S]*B
будет соответствовать aBaaaaB
в aBaaaaB
.
Ответ на этот вопрос должен быть в любом учебнике или документации по регулярному выражению Java, которые вы просматриваете. Да, есть один, это звездочка. *
a* // looks for 0 or more instances of "a"
Я просто googled «java regex repeat zero or more times», и первый хит отвечает на ваш вопрос, как, вероятно, 95% других хитов.
Я бы использовал .*
. .
соответствует любому символу, *
означает 0 или более случаев. Вам может понадобиться переключатель DOTALL в регулярное выражение для захвата новых строк с помощью .
.
Вы имеете в виду
.*
.
любой символ, кроме символа новой строки, с точечным режимом он включает также символы новой строки
*
любую сумму предыдущего выражение, включающее 0 раз