इकाई फ्रेमवर्क का उपयोग करके केवल एक फ़ील्ड कैसे अपडेट करें?


188

यहाँ तालिका है

उपयोगकर्ता

UserId
UserName
Password
EmailAddress

और कोड ..

public void ChangePassword(int userId, string password){
//code to update the password..
}

26
द्वारा Password, आपके पास हैशेड पासवर्ड है, है ना? :-)
एडवर्ड ब्रे

जवाबों:


368

DbContext (EF 4.1 में प्रस्तुत) का उपयोग करने के लिए अपडेट किए गए लडिस्लाव का जवाब:

public void ChangePassword(int userId, string password)
{
  var user = new User() { Id = userId, Password = password };
  using (var db = new MyEfContextName())
  {
    db.Users.Attach(user);
    db.Entry(user).Property(x => x.Password).IsModified = true;
    db.SaveChanges();
  }
}

55
मैं केवल db.Configuration.ValidateOnSaveEnabled = false जोड़कर इस कोड को बनाने में सक्षम था; db.SaveChanges () से पहले?
जेक ड्रू

3
जोहानसप का उपयोग करने के लिए शामिल है db.Entry(user).Property(x => x.Password).IsModified = true;और नहींdb.Entry(user).Property("Password").IsModified = true;
जोहान

5
जब तालिका में टाइमस्टैम्प फ़ील्ड होता है, तो यह दृष्टिकोण एक OptimisticConcurencyException को फेंकता है।
मक्सीम वी।

9
मुझे लगता है कि यदि आप उपयोग कर रहे हैं, तो आप db.Configuration.ValidateOnSaveEnabled = false;जिस क्षेत्र को अद्यतन कर रहे हैं, उसे मान्य रखना चाहते हैं:if (db.Entry(user).Property(x => x.Password).GetValidationErrors().Count == 0)
ज़ीउल

2
यदि आपको अपनी तालिका में उन फ़ील्ड की आवश्यकता है, जिन्हें आपने अपने अद्यतन के दौरान प्रदान नहीं किया है, तो आपको ValidateOnSaveEnabled को झूठे में सेट करना होगा
Sal

54

आप ईएफ को बता सकते हैं कि किन संपत्तियों को इस तरह से अद्यतन किया जाना है:

public void ChangePassword(int userId, string password)
{
  var user = new User { Id = userId, Password = password };
  using (var context = new ObjectContext(ConnectionString))
  {
    var users = context.CreateObjectSet<User>();
    users.Attach(user);
    context.ObjectStateManager.GetObjectStateEntry(user)
      .SetModifiedProperty("Password");
    context.SaveChanges();
  }
}

ObjectStateManager DBContext
LoxLox

16

आपके पास मूल रूप से दो विकल्प हैं:

  • सभी तरह से ईएफ रास्ते पर जाएं, उस स्थिति में, आप करेंगे
    • userIdप्रदान की गई वस्तु के आधार पर लोड करें - पूरी वस्तु लोड हो जाती है
    • passwordक्षेत्र को अपडेट करें
    • संदर्भ की .SaveChanges()विधि का उपयोग करके ऑब्जेक्ट को वापस सहेजें

इस मामले में, यह ईएफ तक है कि इसे विस्तार से कैसे संभालना है। मैंने अभी इसका परीक्षण किया है, और इस मामले में मैं केवल एक वस्तु के एक ही क्षेत्र को बदलता हूं, जो ईएफ बनाता है वह बहुत अधिक है जिसे आप मैन्युअल रूप से बनाएंगे, बहुत कुछ - जैसे:

`UPDATE dbo.Users SET Password = @Password WHERE UserId = @UserId`

तो EF यह जानने के लिए काफी स्मार्ट है कि कॉलम वास्तव में क्या बदल गए हैं, और यह केवल उन अपडेट को संभालने के लिए एक टी-एसक्यूएल स्टेटमेंट बनाएगा जो वास्तव में आवश्यक हैं।

  • आप एक संग्रहीत कार्यविधि को परिभाषित करते हैं जो आपको वही चाहिए, जो टी-एसक्यूएल कोड में है (बस Passwordदिए गए कॉलम को अपडेट करें UserIdऔर कुछ नहीं - मूल रूप से निष्पादित UPDATE dbo.Users SET Password = @Password WHERE UserId = @UserId) और आप अपने ईएफ मॉडल में उस संग्रहीत प्रक्रिया के लिए एक फ़ंक्शन आयात बनाते हैं और आप इसे कॉल करते हैं ऊपर उल्लिखित चरणों को करने के बजाय कार्य करें

1
@ marc-s वास्तव में आपको संपूर्ण ऑब्जेक्ट लोड करने की आवश्यकता नहीं है!
अरविंद

13

एंटिटी फ्रेमवर्क कोर में, Attachएंट्री लौटाता है, इसलिए आपको बस जरूरत है:

var user = new User { Id = userId, Password = password };
db.Users.Attach(user).Property(x => x.Password).IsModified = true;
db.SaveChanges();

12

मैं इसका उपयोग कर रहा हूँ:

इकाई:

public class Thing 
{
    [Key]
    public int Id { get; set; }
    public string Info { get; set; }
    public string OtherStuff { get; set; }
}

dbcontext:

public class MyDataContext : DbContext
{
    public DbSet<Thing > Things { get; set; }
}

एक्सेसर कोड:

MyDataContext ctx = new MyDataContext();

// FIRST create a blank object
Thing thing = ctx.Things.Create();

// SECOND set the ID
thing.Id = id;

// THIRD attach the thing (id is not marked as modified)
db.Things.Attach(thing); 

// FOURTH set the fields you want updated.
thing.OtherStuff = "only want this field updated.";

// FIFTH save that thing
db.SaveChanges();

1
जब मैं यह कोशिश करता हूं, तो मुझे इकाई सत्यापन त्रुटियां मिलती हैं, लेकिन यह निश्चित रूप से अच्छा लगता है।
at१३ १५:१५ बजे देवभूमि

इस विधि से काम नहीं करता है !!!: हो सकता है कि आपको अधिक विवरण देने की आवश्यकता है कि इसका उपयोग कैसे करें !!! - यह त्रुटि है: "डोमेन की एक इकाई को संलग्न करना 'Domain.Job' विफल रहा क्योंकि उसी प्रकार की एक अन्य इकाई में पहले से ही प्राथमिक कुंजी मान है। यह 'अटैच' विधि का उपयोग करते समय या किसी इकाई की स्थिति सेट करते समय हो सकता है। "अपरिवर्तित 'या' संशोधित 'करने के लिए यदि ग्राफ़ में किसी भी संस्था में परस्पर विरोधी प्रमुख मान हैं। ऐसा इसलिए हो सकता है क्योंकि कुछ इकाइयाँ नई हैं और अभी तक डेटाबेस-जनरेट किए गए प्रमुख मान प्राप्त नहीं हुए हैं।"
लुसियन बम्ब

Perfec! किसी भी मॉडल के लिए लचीला दृष्टिकोण देखने के लिए मेरे उत्तर की जाँच करें!
क्रि।

10

इस समस्या के समाधान की खोज करते हुए, मैंने पैट्रिक डेसजार्डिन्स के ब्लॉग के माध्यम से गोनेले के उत्तर पर एक बदलाव पाया :

public int Update(T entity, Expression<Func<T, object>>[] properties)
{
  DatabaseContext.Entry(entity).State = EntityState.Unchanged;
  foreach (var property in properties)
  {
    var propertyName = ExpressionHelper.GetExpressionText(property);
    DatabaseContext.Entry(entity).Property(propertyName).IsModified = true;
  }
  return DatabaseContext.SaveChangesWithoutValidation();
}

" जैसा कि आप देख सकते हैं, यह अपने दूसरे पैरामीटर को फ़ंक्शन की अभिव्यक्ति के रूप में लेता है। यह एक लैम्बडा अभिव्यक्ति में निर्दिष्ट करके इस पद्धति का उपयोग करेगा जो अद्यतन करने के लिए संपत्ति है। "

...Update(Model, d=>d.Name);
//or
...Update(Model, d=>d.Name, d=>d.SecondProperty, d=>d.AndSoOn);

(कुछ इसी तरह का समाधान यहां भी दिया गया है: https://stackoverflow.com/a/5749469/2115384 )

वर्तमान में मैं अपने कोड में उपयोग कर रहा हूं , यह भी विस्तार से (Linq) प्रकार की अभिव्यक्तियाँ ExpressionType.Convertयह मेरे मामले में आवश्यक था, उदाहरण के लिए Guidऔर अन्य वस्तु गुणों के साथ। एक कन्वर्ट () में 'लिपटे हुए' थे और इसलिए उन्हें संभाला नहीं गया System.Web.Mvc.ExpressionHelper.GetExpressionText

public int Update(T entity, Expression<Func<T, object>>[] properties)
{
    DbEntityEntry<T> entry = dataContext.Entry(entity);
    entry.State = EntityState.Unchanged;
    foreach (var property in properties)
    {
        string propertyName = "";
        Expression bodyExpression = property.Body;
        if (bodyExpression.NodeType == ExpressionType.Convert && bodyExpression is UnaryExpression)
        {
            Expression operand = ((UnaryExpression)property.Body).Operand;
            propertyName = ((MemberExpression)operand).Member.Name;
        }
        else
        {
            propertyName = System.Web.Mvc.ExpressionHelper.GetExpressionText(property);
        }
        entry.Property(propertyName).IsModified = true;
    }

    dataContext.Configuration.ValidateOnSaveEnabled = false;
    return dataContext.SaveChanges();
}

1
जब मैं इसका उपयोग करता हूं तो यह मुझे त्रुटि देता है, मैं लंबन अभिव्यक्ति को 'अभिव्यक्ति <फंक <रिक्वेस्टडेल, ऑब्जेक्ट >>] [] में नहीं बदल सकता क्योंकि यह एक प्रतिनिधि प्रकार नहीं है
इमरान रिज़वी

@ImranRizvi, आपको बस पैरामीटर्स को अपडेट करने की आवश्यकता है: पब्लिक इंट अपडेट (टी एंटिटी, परम्स एक्सप्रेशन <फंक <टी, ऑब्जेक्ट >> [] प्रॉपर्टीज] एक्सप्रेशन से पहले
परमेश्‍वर के

6

मुझे यहाँ खेल के लिए देर हो रही है, लेकिन यह है कि मैं इसे कैसे कर रहा हूं, मैंने एक समाधान के लिए शिकार करने के दौरान कुछ समय बिताया, जिसके साथ मैं व्यंग्य कर रहा था; यह UPDATEकेवल उन फ़ील्ड्स के लिए एक स्टेटमेंट तैयार करता है जो बदल दिए जाते हैं, जैसा कि आप स्पष्ट रूप से परिभाषित करते हैं कि वे "व्हाइट लिस्ट" अवधारणा के माध्यम से हैं जो वैसे भी वेब फॉर्म इंजेक्शन को रोकने के लिए अधिक सुरक्षित हैं।

मेरे ISIS डेटा रिपॉजिटरी का एक अंश:

public bool Update<T>(T item, params string[] changedPropertyNames) where T 
  : class, new()
{
    _context.Set<T>().Attach(item);
    foreach (var propertyName in changedPropertyNames)
    {
        // If we can't find the property, this line wil throw an exception, 
        //which is good as we want to know about it
        _context.Entry(item).Property(propertyName).IsModified = true;
    }
    return true;
}

यदि आप चाहें तो इसे एक कोशिश में लपेटा जा सकता है। लेकिन इस परिदृश्य में अपवादों के बारे में जानने के लिए मैं अपने कॉलर को व्यक्तिगत रूप से पसंद करता हूं।

इसे कुछ इस तरह से कहा जाएगा (मेरे लिए, यह ASP.NET वेब एपीआई के माध्यम से था):

if (!session.Update(franchiseViewModel.Franchise, new[]
    {
      "Name",
      "StartDate"
  }))
  throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound));

2
तो आपका बेहतर समाधान क्या है एलिसा? आपको स्पष्ट रूप से बताना चाहिए कि आप किस गुणों को अपडेट करने की अनुमति देते हैं (जैसे ASP.NET MVC के UpdateModelकमांड के लिए आवश्यक श्वेत सूची ), उस तरह से आप सुनिश्चित करते हैं कि हैकर फॉर्म इंजेक्शन नहीं हो सकता है और वे उन फ़ील्ड को अपडेट नहीं कर सकते हैं जिन्हें उन्हें अपडेट करने की अनुमति नहीं है। यदि कोई व्यक्ति स्ट्रिंग सरणी को किसी प्रकार के Update<T>
लंबोदर


1
@ एलिसा यह फंक <टी, सूची <ऑब्जेक्ट >> स्ट्रिंग के बजाय [] का उपयोग करके सुधार किया जा सकता है
Spongebob कॉमरेड

खेल के बाद भी, और शायद यह बहुत अधिक हालिया वाक्य रचना है, लेकिन var entity=_context.Set<T>().Attach(item);इसके बाद entity.Property(propertyName).IsModified = true;लूप में काम करना चाहिए।
शुभ

4

इकाई फ्रेमवर्क उन वस्तुओं पर आपके परिवर्तनों को ट्रैक करता है, जिन्हें आपने डेटाबेस से DbContext के माध्यम से समझा था। उदाहरण के लिए यदि आप DbContext उदाहरण नाम dbContext है

public void ChangePassword(int userId, string password){
     var user = dbContext.Users.FirstOrDefault(u=>u.UserId == userId);
     user.password = password;
     dbContext.SaveChanges();
}

और इस मामले में दृश्य कैसा होना चाहिए?
Emanuela Colta

यह गलत है क्योंकि यह बदले हुए पासवर्ड के साथ संपूर्ण उपयोगकर्ता ऑब्जेक्ट को बचाएगा।
अमूलर

यह सच है, लेकिन शेष उपयोगकर्ता वस्तु वही होगी जो पहले संदर्भ में थी, केवल एक चीज जो संभवतः भिन्न होगी वह है पासवर्ड इसलिए इसका अनिवार्य रूप से केवल पासवर्ड अपडेट करना है।
टॉमिस्लाव 3008

3

मुझे पता है कि यह एक पुराना धागा है, लेकिन मैं भी इसी तरह के समाधान की तलाश में था और समाधान @ डॉकू-के साथ जाने का फैसला किया। मैं @ इमरान रिज़वी द्वारा पूछे गए सवाल का जवाब देने के लिए टिप्पणी कर रहा हूं, मैंने @ डोकू-लिंक का अनुसरण किया जो एक समान कार्यान्वयन दिखाता है। @ इमरान रिज़वी का सवाल था कि उन्हें प्रदान किए गए समाधान का उपयोग करने में त्रुटि हो रही थी 'लैंबडा एक्सप्रेशन को' एक्सप्रेशन> [] में नहीं बदल सकते क्योंकि यह एक प्रतिनिधि प्रकार नहीं है। ' मैं @ Doku- के समाधान के लिए किए गए एक छोटे से संशोधन की पेशकश करना चाहता था जो इस त्रुटि को ठीक करता है अगर कोई भी इस पोस्ट के पार आता है और @ Doku-so के समाधान का उपयोग करने का निर्णय लेता है।

समस्या अद्यतन विधि में दूसरा तर्क है,

public int Update(T entity, Expression<Func<T, object>>[] properties). 

प्रदान की गई सिंटैक्स का उपयोग करके इस विधि को कॉल करने के लिए ...

Update(Model, d=>d.Name, d=>d.SecondProperty, d=>d.AndSoOn); 

आपको दूसरे तर्क के सामने 'params' कीवर्ड जोड़ना होगा।

public int Update(T entity, params Expression<Func<T, object>>[] properties)

या यदि आप विधि हस्ताक्षर नहीं बदलना चाहते हैं, तो अद्यतन विधि को कॉल करने के लिए आपको ' नया ' कीवर्ड जोड़ने की जरूरत है , सरणी का आकार निर्दिष्ट करें, फिर अंत में अद्यतन करने के लिए प्रत्येक संपत्ति के लिए संग्रह ऑब्जेक्ट एनेलाइज़र सिंटैक्स का उपयोग करें। नीचे।

Update(Model, new Expression<Func<T, object>>[3] { d=>d.Name }, { d=>d.SecondProperty }, { d=>d.AndSoOn });

@ डोकू-तो उदाहरण में वह एक्सप्रेशन की एक सरणी निर्दिष्ट कर रहा है, इसलिए आपको किसी सरणी में अद्यतन करने के लिए गुण पास करना होगा, क्योंकि सरणी के कारण आपको सरणी का आकार भी निर्दिष्ट करना होगा। इससे बचने के लिए आप सरणी के बजाय IEnumerable का उपयोग करने के लिए अभिव्यक्ति तर्क भी बदल सकते हैं।

यहाँ मेरा @ डॉको का समाधान लागू है।

public int Update<TEntity>(LcmsEntities dataContext, DbEntityEntry<TEntity> entityEntry, params Expression<Func<TEntity, object>>[] properties)
     where TEntity: class
    {
        entityEntry.State = System.Data.Entity.EntityState.Unchanged;

        properties.ToList()
            .ForEach((property) =>
            {
                var propertyName = string.Empty;
                var bodyExpression = property.Body;
                if (bodyExpression.NodeType == ExpressionType.Convert
                    && bodyExpression is UnaryExpression)
                {
                    Expression operand = ((UnaryExpression)property.Body).Operand;
                    propertyName = ((MemberExpression)operand).Member.Name;
                }
                else
                {
                    propertyName = System.Web.Mvc.ExpressionHelper.GetExpressionText(property);
                }

                entityEntry.Property(propertyName).IsModified = true;
            });

        dataContext.Configuration.ValidateOnSaveEnabled = false;

        return dataContext.SaveChanges();
    }

उपयोग:

this.Update<Contact>(context, context.Entry(modifiedContact), c => c.Active, c => c.ContactTypeId);

@ Doku- तो जेनेरिक का उपयोग करके एक शांत दृष्टिकोण प्रदान किया, मैंने अवधारणा का उपयोग अपने मुद्दे को हल करने के लिए किया, लेकिन आप @ Doku- के समाधान का उपयोग नहीं कर सकते हैं जैसा कि इस पोस्ट और लिंक किए गए पोस्ट में किसी ने भी उपयोग त्रुटि प्रश्नों का उत्तर नहीं दिया।


मैं आपके समाधान पर काम कर रहा था जब प्रोग्राम लाइन पास हो जाता है entityEntry.State = EntityState.Unchanged;, पैरामीटर में सभी अपडेट किए गए मान entityEntryवापस मिल जाते हैं, इसलिए कोई परिवर्तन नहीं बचा है, क्या आप इस पर मदद कर सकते हैं, धन्यवाद
sairfan

2

EntityFramework Core 2.x में इसकी कोई आवश्यकता नहीं है Attach:

 // get a tracked entity
 var entity = context.User.Find(userId);
 entity.someProp = someValue;
 // other property changes might come here
 context.SaveChanges();

SQL सर्वर में इसे आज़माया और इसकी रूपरेखा तैयार की:

exec sp_executesql N'SET NOCOUNT ON;
UPDATE [User] SET [someProp] = @p0
WHERE [UserId] = @p1;
SELECT @@ROWCOUNT;

',N'@p1 int,@p0 bit',@p1=1223424,@p0=1

यह सुनिश्चित करें कि पहले से लोड की गई इकाइयाँ एक SELECT को ट्रिगर न करें और जरूरत पड़ने पर (डॉक्स से) स्वचालित रूप से इकाई संलग्न करें:

    ///     Finds an entity with the given primary key values. If an entity with the given primary key values
    ///     is being tracked by the context, then it is returned immediately without making a request to the
    ///     database. Otherwise, a query is made to the database for an entity with the given primary key values
    ///     and this entity, if found, is attached to the context and returned. If no entity is found, then
    ///     null is returned.

1

कई सुझावों को मिलाकर मैं निम्नलिखित प्रस्ताव करता हूं:

    async Task<bool> UpdateDbEntryAsync<T>(T entity, params Expression<Func<T, object>>[] properties) where T : class
    {
        try
        {
            var entry = db.Entry(entity);
            db.Set<T>().Attach(entity);
            foreach (var property in properties)
                entry.Property(property).IsModified = true;
            await db.SaveChangesAsync();
            return true;
        }
        catch (Exception ex)
        {
            System.Diagnostics.Debug.WriteLine("UpdateDbEntryAsync exception: " + ex.Message);
            return false;
        } 
    }

के द्वारा बुलाया गया

UpdateDbEntryAsync(dbc, d => d.Property1);//, d => d.Property2, d => d.Property3, etc. etc.);

या द्वारा

await UpdateDbEntryAsync(dbc, d => d.Property1);

या द्वारा

bool b = UpdateDbEntryAsync(dbc, d => d.Property1).Result;

इस विधि को अन्य वर्ग के लिए कैसे उपलब्ध कराया जा सकता है, विस्तार विधि की तरह हो सकता है?
वेलकुमार

में इस नेट कोर ट्यूटोरियल वे MVC में अद्यतन विशिष्ट गुणों के लिए (नया) एफई कोर का उपयोग कर सबसे अच्छा अभ्यास दिखा। 'TryUpdateModelAsync' देखें।
गाय

1
@ विशाल हालाँकि, एक बार और अधिक Microsoft के "सर्वोत्तम अभ्यास" के अलावा कुछ और करना है जो उनके उपकरण बनाते हैं ...
Auspex

यह एक अच्छा उपाय है।
तीमुथियुस मकारिया

1

मैं ValueInjecterनिम्नलिखित का उपयोग करके डेटाबेस एंटिटी में बाइंडिंग मॉडल इंजेक्ट करने के लिए नगेट का उपयोग करता हूं:

public async Task<IHttpActionResult> Add(CustomBindingModel model)
{
   var entity= await db.MyEntities.FindAsync(model.Id);
   if (entity== null) return NotFound();

   entity.InjectFrom<NoNullsInjection>(model);

   await db.SaveChangesAsync();
   return Ok();
}

कस्टम कन्वेंशन के उपयोग पर ध्यान दें, जो सर्वर से शून्य होने पर प्रॉपर्टी को अपडेट नहीं करते हैं।

मान इंजेक्टर v3 +

public class NoNullsInjection : LoopInjection
{
    protected override void SetValue(object source, object target, PropertyInfo sp, PropertyInfo tp)
    {
        if (sp.GetValue(source) == null) return;
        base.SetValue(source, target, sp, tp);
    }
}

उपयोग:

target.InjectFrom<NoNullsInjection>(source);

मान इंजेक्टर V2

देखने के इस जवाब

चेतावनी

आपको पता नहीं चलेगा कि संपत्ति जानबूझकर खाली कर दी गई है या उसके पास कोई मूल्य नहीं है। दूसरे शब्दों में, संपत्ति के मूल्य को केवल दूसरे मूल्य से बदला जा सकता है, लेकिन मंजूरी नहीं दी गई है।


0

मैं उसी की तलाश में था और आखिरकार मुझे इसका हल मिल गया

using (CString conn = new CString())
{
    USER user = conn.USERs.Find(CMN.CurrentUser.ID);
    user.PASSWORD = txtPass.Text;
    conn.SaveChanges();
}

मेरा विश्वास करो कि यह मेरे लिए एक आकर्षण की तरह काम करता है।


0

यह वह है जो मैं उपयोग करता हूं, कस्टम InjectNonNull (obj dest, obj src) का उपयोग करके यह इसे पूरी तरह से लचीला बनाता है

[HttpPost]
public async Task<IActionResult> Post( [FromQuery]Models.Currency currency ) {
  if ( ModelState.IsValid ) {
    // find existing object by Key
    Models.Currency currencyDest = context.Currencies.Find( currency.Id ); 

    context.Currencies.Attach( currencyDest );

    // update only not null fields
    InjectNonNull( currencyDest, currency );

    // save
    await context.SaveChangesAsync( );
  }  
  return Ok();
}

// Custom method
public static T InjectNonNull<T>( T dest, T src ) {
  foreach ( var propertyPair in PropertyLister<T, T>.PropertyMap ) {
    var fromValue = propertyPair.Item2.GetValue( src, null );
    if ( fromValue != null && propertyPair.Item1.CanWrite ) {
       propertyPair.Item1.SetValue( dest, fromValue, null );
    }
  }
  return dest;
}

-1
public async Task<bool> UpdateDbEntryAsync(TEntity entity, params Expression<Func<TEntity, object>>[] properties)
{
    try
    {
        this.Context.Set<TEntity>().Attach(entity);
        EntityEntry<TEntity> entry = this.Context.Entry(entity);
        entry.State = EntityState.Modified;
        foreach (var property in properties)
            entry.Property(property).IsModified = true;
        await this.Context.SaveChangesAsync();
        return true;
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

-7
public void ChangePassword(int userId, string password)
{
  var user = new User{ Id = userId, Password = password };
  using (var db = new DbContextName())
  {
    db.Entry(user).State = EntityState.Added;
    db.SaveChanges();
  }
}

1
यह एक नई पंक्ति जोड़ देगा। सवाल यह है कि किसी मौजूदा को कैसे अपडेट किया जाए।
एडवर्ड ब्रे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.