Добавление случая, когда имя класса для объекта, используемого в структуре сущности, такое же, как имя класса для файла с кодировкой веб-формы.
Предположим, у вас есть веб-форма 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 ()
Я думаю, что лучше всего использовать посредника, например веб-службы, или собственный логический уровень на основе TCP для вашего приложения, которое будет подключаться к серверу SQL и выполнять запросы вашей заявки. Не пытайтесь подключиться к вашему SQL-серверу напрямую с Android. Вы можете написать некоторый код на вашем сервере (или веб-сервисе), а затем вызвать эти методы кода с вашего устройства Android с помощью Http.
А также есть много тем в stackoverflow, например your:
О том, как писать веб-сервисы. Это большой вопрос, и вы должны выбрать технологию, есть очень много библиотек, фреймворков и платформ, которые помогут вам просто написать веб-сервис. Вы должны выбрать протокол связи, это может быть SOAP, WSDL или, возможно, удалить процедуру вызова, это может быть приложение для отдыха. Если вы используете Java-стек, на данный момент есть несколько популярных фреймворков:
Вы можете начать с чтения веб-службы:
Также некоторые ссылки, которые предоставляют пример доступа к веб-службам от android:
Другим и гораздо более простым подходом является использование виртуального драйвера JDBC, который полагается на защищенную трехуровневую архитектуру: ваш JDBC-код отправляется через HTTP на удаленный сервлет, который фильтрует JDBC-код (конфигурация и безопасность) перед его передачей к драйверу JDBC MySql. Результат отправляется обратно через HTTP.
Есть несколько бесплатных программ, которые используют эту технику. Просто Google «Android JDBC Driver over HTTP».
Вам нужно будет поддерживать онлайн-сервер среднего уровня. Он может взаимодействовать между вашим приложением и MSSQL db.May быть сервлетом или обработчиком запросов, который синхронизируется между SQLite и SQL Server db.