简体   繁体   中英

How to Check if record exist in database using Entity Framework in ASP.NET MVC razor?

Is it possible for a controller to check if record exists in database using ADO.NET?

Here is my controller

[HttpPost]
public ActionResult Add(TemporaryVoucher temporaryVoucher)
{
    string fileName = Path.GetFileNameWithoutExtension(temporaryVoucher.ImageFile.FileName);
    string extension = Path.GetExtension(temporaryVoucher.ImageFile.FileName);
    fileName = fileName + DateTime.Now.ToString("yymmssfff") + extension;

    /*temporaryVoucher.VoucherPath = "/Image/" + fileName;
    fileName = Path.Combine(Server.MapPath("/Image/"), fileName);*/
    temporaryVoucher.VoucherPath = fileName;

    using (DBModels db = new DBModels())
    {
        db.TemporaryVouchers.Add(temporaryVoucher);
        db.SaveChanges();
    }

    ModelState.Clear();
    return View();
}

Here is my ado.net in model

public partial class TemporaryVoucher
{
    public int PromoKey { get; set; }
    public string PromoName { get; set; }
    [DisplayName("Upload Image")]
    public string VoucherPath { get; set; }

    public HttpPostedFileBase ImageFile { get; set; }
}

Here is my view

<div class="form-group">
        @*Html.LabelFor(model => model.ImageName)*@
        <label name="PromoName" style="text-align: right; clear: both; float:left;margin-right:15px;">PromoName</label>
        <div class="col-md-10">
            @*Html.EditorFor(model => model.ImageName, new { htmlAttributes = new { @class = "form-control", required = "required" } })
                @Html.ValidationMessageFor(model => model.ImageName, "", new { @class = "text-danger" })*@
            <input type="text" name="PromoName" id="txtInput" onkeypress="return checkSpcialChar(event)" required />
        </div>
    </div>
    <div class="form-group">
        @*Html.LabelFor(model => model.ImagePath, htmlAttributes: new { @class = "control-label col-md-2" })*@
        <label name="ImagePath" style="text-align: right; clear: both; float:left;margin-right:15px;margin-top:5px;">Upload Image</label>
        <div class="col-md-10">
            <input type="file" style="margin-top:5px;" name="ImageFile" accept=".jpg,.jpeg,.png" required />
        </div>
    </div>
    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Upload" style="margin-top:5px;" class="btn btn-default" />
        </div>
    </div>
</div>

I just want to ensure no possible duplication for PromoName in the database

You can perform a 'get' within your controller action based on any identity column to check for an existing value in the database. If present, return with a message, else add the incoming model to the database. Something like this:


using (DBModels db = new DBModels())
{   
    TemporaryVoucher tv = (from t1 in db.TemporaryVouchers
                           where t1.PromoKey == temporaryVoucher.PromoKey  // any identifier comparison can be done here
                           select t1).FirstOrDefault();
    if(tv != null)
        // return with a message that incoming temporary voucher already exists
    db.TemporaryVouchers.Add(temporaryVoucher);
    db.SaveChanges();
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM