Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I save object to database using EF and get primary key created back from database?

I'm developing a WCF JSon Web service with C#, .NET Framework 4.0, using Entity Framework to access database.

I have to create a new EReportDB.EReport object, fill it, save it on database and get its new pk EReportDb.Ereport.eReportId.

This is my code, but I don't know how to do it:

    public bool SaveEReport(EReportContract eContractReport)
    {
        if (eContractReport == null)
            throw new ArgumentNullException("eContractReport", "SaveEReport: eReport is null");

        using (EReportDB.EReportEntities context = new EReportDB.EReportEntities())
        {
            EReportDB.EReport eReport = new EReportDB.EReport();
            eReport.orderId = eContractReport.orderId;
            eReport.timeIn = DateTime.Parse(eContractReport.timeIn, new CultureInfo("en-GB", false));
            eReport.timeOut = DateTime.Parse(eContractReport.timeOut, new CultureInfo("en-GB", false));
            eReport.isProducFact = eContractReport.isProducFact;
            /*
              ..snip..
            */
            eReport.olPkSizeRs_ = eContractReport.olPkSizeRs;
            eReport.olPkWeightRs = eContractReport.olPkWeightRs;
        }
        return false;
    }

How can I do that?

like image 406
VansFannel Avatar asked Nov 30 '25 18:11

VansFannel


2 Answers

int id = 0; // assuming the datatype for eReportId is int

using (EReportDB.EReportEntities objectContext = new EReportDB.EReportEntities())
{
   EReportDB.EReport eReport = new EReportDB.EReport();
   eReport.orderId = eContractReport.orderId;
   eReport.timeIn = DateTime.Parse(eContractReport.timeIn, new CultureInfo("en-GB", false));
   eReport.timeOut = DateTime.Parse(eContractReport.timeOut, new CultureInfo("en-GB", false));
   eReport.isProducFact = eContractReport.isProducFact;
   /*
     ..snip..
   */
   eReport.olPkSizeRs_ = eContractReport.olPkSizeRs;
   eReport.olPkWeightRs = eContractReport.olPkWeightRs;

   objectContext.AddObject(eReport); // method to insert the entity 
   objectContext.SaveChanges();
   id = eReport.eReportId;

   transaction.Complete();
}

id is the PK for inserted record.

like image 192
chridam Avatar answered Dec 03 '25 09:12

chridam


It is already filled for you by EF. Just call

context.AddObject(eReport); 
context.Save(); 

at the end of your using block and you will find your key in eReport.eReportId.

like image 24
Anri Avatar answered Dec 03 '25 07:12

Anri



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!