MVC简单插入不更新数据库

时间:2014-10-02 10:20:32

标签: asp.net-mvc database dbcontext

这让我疯了。我试图做一个“简单”的记录插入,如果我将上下文存储在变量中或创建一个本地上下文,我只能让它工作。我试图将上下文和模型对象绑在一起但到目前为止没有运气。

public class TransactionDataAccessLayer
{        
    public cartableContext transactionContext
    {
        get
        {                
            return new cartableContext();
        }
    }
}



class TransactionBusinessLayer
{       
    Cardata newCar = new Cardata();
    public void addCar(Cardata cd)
    {
        try
        {

            //this works. Storing the context in ctc2 seems to make it work???
            TransactionDataAccessLayer tdal = new TransactionDataAccessLayer();
            cartableContext ctc2 = tdal.transactionContext;
            ctc2.cardata.Add(cd);
            ctc2.SaveChanges();

            //this does not work
            tdal.transactionContext.cardata.Add(cd);                
            tdal.transactionContext.Entry(cd).State = EntityState.Modified;                
            tdal.transactionContext.SaveChanges();

        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.InnerException);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

在C#中,属性基本上只是花哨的方法,旨在使访问私有字段更容易。因此,在getter中返回一个新的Context就可以做到这一点;每次访问时都返回一个 new 。要保留状态,您需要在私有字段中包含您的上下文,如下所示:

public class TransactionDataAccessLayer
{   
    private cartableContext _transactionContext;
    public cartableContext transactionContext
    {
        get
        {   
            if (_transactionContext == null)
               _transactionContext = new cartableContext();
            return _transactionContext;
        }
    }
}