LINQ ASP .net MVC actionresult СОЗДАТЬ - PullRequest
0 голосов
/ 03 апреля 2019

Это мой код метода CreateResult Create:

public ActionResult Create([Bind(Include = "FileStatusID, Name, MinValue, MaxValue")] fileStatusModel FILeStatusModel, TBL_FileStatus tBL_FileStatus) //include tem os valores que vamos inserir na view
{
    var userID = ((SessionModel)Session["SessionModel"]).UserID; // get current user id
    using (var query = new Core_DBEntities)
    {
        var query1 = ??????????????
    }
    if (ModelState.IsValid)
    {
        TBL_FileStatus item = new TBL_FileStatus()
        {
            Name = FILeStatusModel.Name,
            MinValue = FILeStatusModel.MinValue,
            MaxValue = FILeStatusModel.MaxValue,
            Ative = true,
            CreateDate = DateTime.Now,
            CreateBy = userID
        };

        db.TBL_FileStatus.Add(item);
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    return View();
}

И это мой SQL-запрос:

DECLARE @p_valuemin INT
DECLARE @p_valuemax INT

SET @p_valuemin = 9   
SET @p_valuemax = 183

IF @p_valuemin >= @p_valuemax
    RAISERROR('@p_valuemin deve ser menor que o @p_valuemax', 16, 1)

SELECT *
FROM [TBL_FileStatus]
WHERE Ative = 1 AND ((@p_valuemin BETWEEN MinValue AND MaxValue) AND MaxValue <> @p_valuemin)
OR ((@p_valuemax BETWEEN MinValue AND MaxValue) AND MinValue <> @p_valuemax)
UNION
SELECT *
FROM [TBL_FileStatus]
WHERE Ative = 1 AND ((MinValue BETWEEN @p_valuemin AND @p_valuemax) AND MinValue <> @p_valuemax)
OR ((MaxValue BETWEEN @p_valuemin AND @p_valuemax) AND MaxValue <> @p_valuemin)

those 2 values will represent the textbox of create
SET @p_valuemin = 9   
SET @p_valuemax = 183

Мой вопрос:

Я хочу объединить этот SQL-запрос с ActionResult Create, чтобы создать условие перед нажатием кнопки «Создать».

Как мне этого добиться?

1 Ответ

1 голос
/ 03 апреля 2019

Если вам требуется вызвать хранимую процедуру, то Entity Framework имеет метод SqlQuery().

Вы можете вызвать хранимую процедуру следующим образом:

var p_valuemin = new SqlParameter
                     {
                         ParameterName = "p_valuemin",
                         Value = 9
                     };
var p_valuemax = new SqlParameter
                     {
                         ParameterName = "p_valuemax",
                         Value = 183
                     };

var query = "GetFileStatus @p_valuemin, @p_valuemax";

var result = db.Database.SqlQuery<GetFileStatus>(query, p_valuemin, p_valuemax).ToList();

Здесь p_valuemin иp_valuemax - это параметры вашей хранимой процедуры SQL Server, и, как указано в запросе, GetFileStatus - это имя вашей хранимой процедуры, а GetFileStatus - ваша модель результата, подобная вашему запросу, возвращающему объект результата из хранимой процедуры

db.Database.SqlQuery<GetFileStatus>(query,p_valuemin, p_valuemax).ToList(); 
* 1013.* для вызова хранимой процедуры.

Ваш результат GetFileStatus модель выглядит как

public class GetFileStatus
{
    public int FileStatusID { get; set; }
    public string Name { get; set; }
    public int MinValue { get; set; }
    public int MaxValue { get; set; }
    public bool Active { get; set; }
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...