// Студенческий контроллер
public class Student
{
[Key]
public int StudentId { get; set; }
public string Name { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public string Emial { get; set; }
public string Role { get; set; }
}
// StudentConroller (здесь я назвал хранимую процедуру)
public class AccountController : Controller
{
public ApplicationDbClass applicationDbClass;
public AccountController()
{
applicationDbClass = new ApplicationDbClass();
}
public ActionResult Login()
{
return View();
}
[HttpPost]
public ActionResult Login(Student student)
{
var v1 = new SqlParameter();
v1.ParameterName = "@role";
v1.SqlDbType = SqlDbType.NVarChar;
v1.Value = "Admin";
var v2 = new SqlParameter();
v2.ParameterName = "@count";
v2.SqlDbType = SqlDbType.Int;
try
{
var result = applicationDbClass.Students.SqlQuery("StudentProcedure @role,@count OUT", v1, v2).ToArray();
}
catch(Exception e)
{
var m = e.Message;
}
return RedirectToAction("Welcome", "Student");
}
}
// Хранимая процедура
CREATE OR ALTER PROCEDURE StudentProcedure
@role NVARCHAR(30),
@count INT OUTPUT
AS
BEGIN
SELECT @count=COUNT(dbo.Students.Role)
FROM dbo.Students
WHERE Role=@role;
END
// DbContext Class
public class ApplicationDbClass : DbContext
{
public ApplicationDbClass() : base()
{
Database.SetInitializer<ApplicationDbClass>(new DropCreateDatabaseIfModelChanges<ApplicationDbClass>());
}
public DbSet<Student> Students { get; set; }
public DbSet<LogTable> LogTables { get; set; }
}
// Здесь я использую первый подход к коду для работы с базой данных, используя сущностную структуру для вызова созданной пользователем хранимой процедуры. Если я внесу некоторые изменения в хранимую процедуру, она не будет указана напрямую. Пожалуйста, дайте мне любое решение, чтобы отразить изменения.