2012-02-17 8 views
5

नहीं मिल रहा है मैं एंटिटी फ्रेमवर्क में नया हूं, और मुझे लगता है कि यहां कुछ ऐसा है जो मैं गलत समझता हूं। मैं एक तालिका में एक पंक्ति डालने की कोशिश कर रहा हूं, और हर जगह मुझे कोड उदाहरण मिला, वे विधि InsertOnSubmit() को कॉल करते हैं, लेकिन समस्या यह है कि मुझे कहीं भी विधि InsertOnSubmit, या SubmitChanges नहीं मिल रहा है।InsertOnSubmit() विधि

त्रुटि मुझे बताओ: System.Data.Object.ObjectSet, InsertOnSubmit के लिए परिभाषा शामिल नहीं है ...

क्या मैं गलत कर रहा हूँ ??

http://msdn.microsoft.com/en-us/library/bb763516.aspx

 GMR_DEVEntities CTX; 
     CTX = new GMR_DEVEntities(); 
     tblConfig Config = new tblConfig { ID = Guid.NewGuid(), Code = "new config code" }; 
     CTX.tblConfigs.InsertOnSubmit(Config); // Error here 

संपादित करें: परिवार कल्याण 4.0

+0

आप ईएफ का उपयोग कर रहे हैं, LINQ से SQL तक नहीं। – SLaks

+1

आप linq-to-sql और [Entity Framework] (http://msdn.microsoft.com/en-us/library/bb738695.aspx) को मिश्रित कर रहे हैं। आप बाद वाले का उपयोग करते हैं। –

+0

मेरा बुरा ओप, मैं – Hugo

उत्तर

14

InsertOnSubmit पर दृश्य स्टूडियो 2010 का उपयोग करते हुए एक Linq करने वाली एसक्यूएल विधि और इकाई की रूपरेखा में नहीं है।

public static class ObjectContextExtensions 
{ 
    public static void SubmitChanges(this ObjectContext context) 
    { 
     context.SaveChanges(); 
    } 

    public static void InsertOnSubmit<T>(this ObjectQuery<T> table, T entity) 
    { 
     table.Context.AddObject(GetEntitySetName(table.Context, entity.GetType()), entity); 
    } 

    public static void InsertAllOnSubmit<T>(this ObjectQuery<T> table, IEnumerable<T> entities) 
    { 
     var entitySetName = GetEntitySetName(table.Context, typeof(T)); 
     foreach (var entity in entities) 
     { 
      table.Context.AddObject(entitySetName, entity); 
     } 
    } 

    public static void DeleteAllOnSubmit<T>(this ObjectQuery<T> table, IEnumerable<T> entities) where T : EntityObject, new() 
    { 
     var entitiesList = entities.ToList(); 
     foreach (var entity in entitiesList) 
     { 
      if (null == entity.EntityKey) 
      { 
       SetEntityKey(table.Context, entity); 
      } 

      var toDelete = (T)table.Context.GetObjectByKey(entity.EntityKey); 
      if (null != toDelete) 
      { 
       table.Context.DeleteObject(toDelete); 
      } 
     } 
    } 

    public static void SetEntityKey<TEntity>(this ObjectContext context, TEntity entity) where TEntity : EntityObject, new() 
    { 
     entity.EntityKey = context.CreateEntityKey(GetEntitySetName(context, entity.GetType()), entity); 
    } 

    public static string GetEntitySetName(this ObjectContext context, Type entityType) 
    { 
     return EntityHelper.GetEntitySetName(entityType, context); 
    } 
} 

कहाँ EntityHelper is as per the MyExtensions खुला स्रोत library:

हालांकि, हमारे परियोजना के बाद से Linq करने वाली एसक्यूएल से रूपांतरण था हम कुछ विस्तार तरीकों कि मदद कर सकता है की है।

+0

अंत में पाया गया कि क्या गलत था, मेरा एंटिटी डेटाबेस एक डीबीएमएक्स फ़ाइल था और एक डीबीएमएल फ़ाइल नहीं थी। मुझे समझ में नहीं आता क्यों .. लेकिन यह लंबे समय तक काम करता है। (मुझे लगता है कि एक नई किताब खरीदने की आवश्यकता है) – Hugo

+0

क्या ये एकमात्र विधियां हैं जो linq-to-sql विशिष्ट हैं या क्या ऐसे अन्य हैं जो ईएफ में माइग्रेट करते समय काम नहीं करते हैं? – frenchie

+0

@frenchie - यह संभवतः संपूर्ण नहीं है, लेकिन इसने हमारे अधिकांश मुद्दों का समाधान किया। – Reddog

1

अंत में पाया गया कि क्या गलत था, मेरा एंटिटी डेटाबेस एक डीबीएमएक्स फ़ाइल था और एक डीबीएमएल फ़ाइल नहीं थी। मुझे समझ में नहीं आता क्यों .. लेकिन यह लंबे समय तक काम करता है। 19:40 पर ह्यूगो 17 फ़र,

0

मैं भी एक ही समस्या हम का उपयोग करके सम्मिलित कर सकते हैं जोड़े गए हैं

GMR_DEVEntities CTX; 
    CTX = new GMR_DEVEntities(); 
    tblConfig Config = new tblConfig { ID = Guid.NewGuid(), Code = "new config code" }; 
    CTX.tblConfigs.Add(Config); 
1

नमस्ते यह मेरे

के लिए काम करता है - (मुझे लगता है कि एक नई किताब खरीदने के लिए की आवश्यकता है)
Entity db = new Entity(); 

TABLE_NAME table = new TABLE_NAME 
        { 
         COLUMN1 = "TEST", 
         cOLUMN2 = "test" 
         //etc... 
        }; 

        db.TABLE_NAME.Add(table); 
        db.SaveChanges(); 
संबंधित मुद्दे