簡體   English   中英

如何使用linq更新記錄的字段

[英]How do I update a field of a record using linq

我正在嘗試做兩件事。 第一種是獲取Client表記錄的ID,並將其轉換為整數。 我的查詢可以,但是如何完成第二項任務-將Investments表(字段:Client_ID)中的記錄更新為第一個提到的ID。 謝謝你的幫助。 也許有更好的方法可以做到這一點。

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "ID,LastName,Fund,PurchaseDate,Shares,PurchasePrice,PurchaseAmount")] Investments investments)
{
    if (ModelState.IsValid)
    {
        db.Ports.Add(investments);
        db.SaveChanges();
        //db.SaveChanges();

        // write the Client_ID to the saved record

        // first get the ID of the client
        var q = (from c in context.Clients
                 where c.LastName == investments.LastName
                 select new
                 {
                     c.ID
                 }).ToList();

        // next update the Client_ID of the Investment record
        var result = (from p in context.Investments
                         where (p.LastName == investments.LastName)
                         && (p.Client_ID == null)
                         select p);

       //I'm not sure what to do next 

        //Context.SaveChanges();


        return RedirectToAction("Index");
    }

    return View(investments);
}



 ++++++++++++++ new code 12/22/2016 - controller +++++++++++++++++

        public ActionResult Create([Bind(Include = "ID,LastName,Fund,PurchaseDate,Shares,PurchasePrice,PurchaseAmount")] Investments investments)
        {
            if (ModelState.IsValid)
            {

                var clientId = (from c in context.Clients
                                where c.LastName == investments.LastName
                                select new
                                {
                                    c.ID
                                }).ToList().First();

                var productList = System.Collections.Generic.IList < Investments >{ investments };

                foreach (var investment in investments)
                {
                    investment.Client_ID = clientId;
                }
                db.Ports.Add(investments);
                db.SaveChanges();

                return RedirectToAction("Index");

            }

            return View(investments);
        }
     +++++++++++++++++++++ model Investments +++++++++++++++++++++

using System;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;

namespace StockHoldings.Models
{
    public class Investments
    {
        public int ID { get; set; }

        [Required]
        [StringLength(20)]
        public string LastName { get; set; }

        [Required]
        public string Fund { get; set; }

        [Required]
        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
        public DateTime PurchaseDate { get; set; }

        [Required]
        [Range(1, 1000)]
        public int Shares { get; set; }

        [Required]
        [Range(0.01, 200.00)]
        [DataType(DataType.Currency)]
        public double PurchasePrice { get; set; }

        [DataType(DataType.Currency)]
        public double PurchaseAmount { get; set; }


    }

您需要將實體標記為已修改:

foreach(var toUpdate in result){
    toUpdate.Client_ID = q.First(); // or int.Parse(q.First());
    Context.Entry(toUpdate).State = EntityState.Modified;
}

Context.SaveChanges();

但是,為什么不插入之前實際更新投資呢?

public ActionResult Create([Bind(Include = "ID,LastName,Fund,PurchaseDate,Shares,PurchasePrice,PurchaseAmount")] Investments investments)
{
    if (ModelState.IsValid)
    {

        var clientId = (from c in context.Clients
             where c.LastName == investments.LastName
             select new
             {
                 c.ID
             }).ToList().First();

        foreach(var investment in investements){
             investment.Client_ID = clientId;
        }
        db.Ports.Add(investments);
        db.SaveChanges();

        return RedirectToAction("Index");
    }

    return View(investments);
}

真正的問題是:

  1. 為什么要檢索其姓氏的clientid? 這是個好主意嗎 ? 也許您的端點也應該接收clientId?

  2. 您是否已經不能將clientId傳遞給初始視圖Bad或數據,並且已經在前端設置了此屬性來構建您的投資對象?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM