সত্তা ফ্রেমওয়ার্ক মডেল ব্যবহার করে ডেটা .োকান


90

সত্তা ফ্রেমওয়ার্ক মডেলটি ব্যবহার করে আমি আমার ডাটাবেসে কিছু তথ্য toোকানোর চেষ্টা করছি, তবে কিছু অজানা কারণে আমার কিছুই হয় না।

আমি কি এখানে কিছু মিস করছি?

using (var context = new DatabaseEntities())
{
    var t = new test
    {
        ID = Guid.NewGuid(),
        name = "blah",
    };
    context.AddTotest(t);
    context.SaveChanges();
}

'SaveChanges (System.Data.Objects.SaveOptions.AcepceptAllChangesAfterSave) চেষ্টা করুন;'
উইলেম

6
কোড প্রথম? মডেল প্রথম? এটি কি ভেঙে যায় বা এটি কিছু রাখে না? এসকিউএল প্রোফাইলার কী বলে? ডেটাবেসে কিছু পাঠানো হচ্ছে কি?
ডেনিস ট্রাব

উত্তর:


118

এটা করা উচিত:

context.TableName.AddObject(TableEntityInstance);

কোথায়:

  1. TableName: ডাটাবেসে সারণির নাম।
  2. TableEntityInstance: টেবিল সত্তা শ্রেণীর একটি উদাহরণ।

যদি আপনার টেবিলটি থাকে Ordersতবে:

Order order = new Order();
context.Orders.AddObject(order);

উদাহরণ স্বরূপ:

 var id = Guid.NewGuid();

 // insert
 using (var db = new EfContext("name=EfSample"))
 {
    var customers = db.Set<Customer>();
    customers.Add( new Customer { CustomerId = id, Name = "John Doe" } );

    db.SaveChanges();
 }

এখানে একটি সরাসরি উদাহরণ:

public void UpdatePlayerScreen(byte[] imageBytes, string installationKey)
{
  var player = (from p in this.ObjectContext.Players where p.InstallationKey == installationKey select p).FirstOrDefault();

  var current = (from d in this.ObjectContext.Screenshots where d.PlayerID == player.ID select d).FirstOrDefault();

  if (current != null)
  {
    current.Screen = imageBytes;
    current.Refreshed = DateTime.Now;

    this.ObjectContext.SaveChanges();
  }
  else
  {
    Screenshot screenshot = new Screenshot();

    screenshot.ID = Guid.NewGuid();
    screenshot.Interval = 1000;
    screenshot.IsTurnedOn = true;
    screenshot.PlayerID = player.ID;
    screenshot.Refreshed = DateTime.Now;
    screenshot.Screen = imageBytes;

    this.ObjectContext.Screenshots.AddObject(screenshot);
    this.ObjectContext.SaveChanges();
  }
}

4
আমার কোনও অ্যাডবজেক্ট পদ্ধতি নেই।
রোক্সি

@ ডেনিস ট্রাব আপনাকে আপনার মডেল সম্পর্কে জিজ্ঞাসা করেছিলেন। এটি সম্পর্কে আরও তথ্য সরবরাহ করুন।
দিমিত্রিবয়েকো

29
ব্যবহার করুন .আডডবজেক্টের পরিবর্তে অ্যাড করুন
ডেল ফ্রেজার

9
EF 6 এ, আপনি ব্যবহার করবেন। পরিবর্তে যুক্ত করুন। অ্যাডবজেক্ট
ডেভিড

4
চমত্কার উত্তর! এটির জন্য ধন্যবাদ যেমন এটি সত্তা কাঠামোটি ব্যবহার করে কীভাবে পড়তে এবং লিখতে দেখায়
এজেন্টি স্টিফেন পেফানিস

41
var context = new DatabaseEntities();

var t = new test //Make sure you have a table called test in DB
{
    ID = Guid.NewGuid(),
    name = "blah",
};

context.test.Add(t);
context.SaveChanges();

এটা করা উচিত


7

[এইচটিটিপি পোস্ট] // আপনি বোতাম ক্লিক ইভেন্টে যুক্তি লেখার সময় এটি ব্যবহার করে

public ActionResult DemoInsert(EmployeeModel emp)
{
    Employee emptbl = new Employee();    // make object of table
    emptbl.EmpName = emp.EmpName;
    emptbl.EmpAddress = emp.EmpAddress;  // add if any field you want insert
    dbc.Employees.Add(emptbl);           // pass the table object 
    dbc.SaveChanges();

    return View();
}

যদি কোনও জিজ্ঞাসা আমাকে জিজ্ঞাসা করুন
সংকেত পরীখ

3

আমি EF6 ব্যবহার করছি, এবং আমি কিছু অদ্ভুত দেখতে পেয়েছি,

মনে করুন গ্রাহকের প্যারামিটার দিয়ে কনস্ট্রাক্টর রয়েছে,

যদি আমি ব্যবহার করি new Customer(id, "name"), এবং করি

 using (var db = new EfContext("name=EfSample"))
 {
    db.Customers.Add( new Customer(id, "name") );
    db.SaveChanges();
 }

এটি ত্রুটি ছাড়াই চলে, কিন্তু যখন আমি ডেটাবেসটি সন্ধান করি তখন আমি দেখতে পাই যে তথ্য Inোকানো হয়নি,

তবে আমি যদি কোঁকড়া বন্ধনী যুক্ত করি তবে ব্যবহার করুন new Customer(id, "name"){}এবং করুন

 using (var db = new EfContext("name=EfSample"))
 {
    db.Customers.Add( new Customer(id, "name"){} );
    db.SaveChanges();
 }

তথ্য তখন actuallyোকানো হবে,

কোঁকড়া বন্ধনীগুলি পৃথক করে বলে মনে হয়, আমি অনুমান করি যে কেবল যখন কোঁকড়া বন্ধনী যুক্ত হবে তখন সত্তা কাঠামোটি এটি একটি সত্যিকারের কংক্রিটের ডেটা সনাক্ত করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.