У меня возникла проблема с обнаружением моей базы данных. Недавно я добавил базу данных, как вы можете видеть на изображении ниже, и мой запрос выглядит правильно (sql ниже, это то, что linq собирается заменить), но я не уверен, почему Visual Studio не обнаруживает мою базу данных. Когда я пытаюсь добавить
using System.Data.Entities
Я не могу найти его, и я его не использую.
Мои текущие поступления:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text.RegularExpressions;
using System.Data.SqlClient;
Следующий снимок экрана может помочь вам понять, что я пытаюсь сказать (откройте изображение на новой вкладке, чтобы просмотреть его в масштабе 100%):
Заранее спасибо за помощь!
У вас есть несколько вопросов:
Вы не добавили модель в свой проект. Я не вижу никаких связанных с ORM файлов в Solution Explorer для SqlIntegrationWithVs
.
После добавления модели, учитывая, что BloodBank
не является свойством класса Register
; таким образом, он все еще не будет существовать в текущем контексте.
В общем, ORM помещают классы с табличным отображением в отдельное пространство имен, например BloodBankDatabase.BloodBanks
, и объекты, которые позволяют вам обращаться к табличным данным, помещаются в определенный класс, поэтому вы получите что-то вроде:
using BloodBankDatabase;
using (var context = new DatabaseContext(connectionString))
{
var returnedPerson = from loginDetails in BloodBank
where loginDetails.Username == usersInput
select loginDetails.Username;
}
Кроме того, глядя на свой код, вы, похоже, не понимаете, как работает С#. Например:
Вы не должны вызывать cmd.Dispose()
внутри using (SqlCommand cmd =...) { }
, потому что using
уже делает это.
SqlDataReader
реализует IDisposable
, поэтому вы забыли using() { }
вокруг него.
Вы не должны исключать Exception
.
where Username == usersInput
не имеет смысла в этом контексте; вы уверены, что понимаете лямбда-выражения?
Не bool usernameTaken = false;
, Вместо этого объявите переменную как можно ближе к месту, где вы ее используете в первую очередь.
Проверяйте свои входы перед их использованием. Что произойдет, если userInput
пуст? Или очень долго?
Как вы можете улучшить?
Stack Oveflow не является веб-сайтом проверки кода. Как только вы заработаете свой код (и только тогда), вы можете быть заинтересованы в отправке его на https://codereview.stackexchange.com/
Вы также можете быть заинтересованы в чтении книги, чтобы узнать С#. С# in Depth by Jon Skeet - это де-факто книга, которую должен прочитать любой начинающий С#.
Если вы работаете в компании, настаивайте на выполнении обзоров кода для каждой строки совершенного кода. Попытайтесь получить более опытных разработчиков, чтобы просмотреть ваш код. Если нет, найдите кого-нибудь (друга, старого коллегу), который готов рассмотреть ваш код.
Анализ кода, доступный в платных версиях Visual Studio, укажет на такие проблемы, как забытые блоки using() { }
. Это намного проще, чем проверка на MSDN каждого класса, который вы используете, чтобы увидеть, реализует ли он IDisposable
.
StyleCop - еще один инструмент, который может вас заинтересовать: он не найдет ошибок как таковых, но заставит вас использовать единый стиль в базе кода.
Попробуйте добавить
using System.Linq;
при использовании операторов.