C# 如何使用linq和EF更新数据库

C# 如何使用linq和EF更新数据库,c#,asp.net,asp.net-mvc-3,C#,Asp.net,Asp.net Mvc 3,我的控制器: [HttpPost] public ActionResult Deposit(DepositTicket dt) { using (var db = new MatchGamingEntities()) { MembershipUser currentUser = Membership.GetUser(); Guid UserId = (Guid)currentUser.Provider

我的控制器:

[HttpPost]
    public ActionResult Deposit(DepositTicket dt)
    {
        using (var db = new MatchGamingEntities())
        {
            MembershipUser currentUser = Membership.GetUser();
            Guid UserId = (Guid)currentUser.ProviderUserKey;
            var MyAccount = from a in db.Accounts
                            where a.UserId == UserId
                            select new Account{ 
                                AccountId = a.AccountId,                                 
                                Balance = a.Balance
                                };

            BankTransaction transaction = new BankTransaction();
            transaction.Amount = dt.Amount;
            transaction.AccountId = MyAccount.SingleOrDefault().AccountId;
            transaction.Created = DateTime.Today;
            transaction.TransactionType = "Credit";
            Debug.Write("Amount: " + transaction.Amount + " AccountId " + transaction.AccountId);
            db.BankTransactions.AddObject(transaction);
            MyAccount.SingleOrDefault().Balance += transaction.Amount;
            //Update Query

            db.SaveChanges();
            return View();
        }

注释更新查询所在的位置,是我要添加更新查询以使用Account对象更新Account表的位置。我想更新现有的记录,这可以使用db.Accounts的预定义函数来完成吗?还是我必须编写linq查询?

似乎您要获得一个自定义account对象,然后只想更新原始account记录,会遇到很多麻烦。我建议只使用原始account对象并进行必要的更新,然后在调用SaveChanges时,它将更新您的帐户记录

这是我建议的改变

public ActionResult Deposit(DepositTicket dt)
{
    using (var db = new MatchGamingEntities())
    {
        MembershipUser currentUser = Membership.GetUser();
        Guid UserId = (Guid)currentUser.ProviderUserKey;
        var MyAccount = db.Accounts.SingleOrDefault(a => a.UserId == UserId);

        BankTransaction transaction = new BankTransaction();
        transaction.Amount = dt.Amount;
        transaction.AccountId = MyAccount.AccountId;
        transaction.Created = DateTime.Today;
        transaction.TransactionType = "Credit";
        Debug.Write(String.Format("Amount: {0} AccountId: {1}", transaction.Amount, transaction.AccountId);
        db.BankTransactions.AddObject(transaction);
        MyAccount.Balance += transaction.Amount;

        db.SaveChanges();
        return View();
    }
希望这有帮助。

db.SaveChanges;将为您执行更新,除非您在db中预定义了SP