Masukkan data menggunakan model Entity Framework

89

Saya mencoba memasukkan beberapa data dalam database saya menggunakan model Entity Framework, tetapi untuk beberapa alasan yang tidak saya ketahui, itu tidak melakukan apa-apa.

Apakah saya melewatkan sesuatu di sini?

using (var context = new DatabaseEntities())
{
    var t = new test
    {
        ID = Guid.NewGuid(),
        name = "blah",
    };
    context.AddTotest(t);
    context.SaveChanges();
}
Rocshy
sumber
Coba 'SaveChanges (System.Data.Objects.SaveOptions.AcceptAllChangesAfterSave);'
Willem
6
Kode Pertama? Model Pertama? Apakah itu rusak atau tidak menyimpan apa-apa? Apa yang dikatakan SQL Profiler? Apakah ada sesuatu yang dikirim ke database?
Dennis Traub

Jawaban:

117

Harus:

context.TableName.AddObject(TableEntityInstance);

Dimana:

  1. TableName: nama tabel di database.
  2. TableEntityInstance: turunan dari kelas entitas tabel.

Jika tabel Anda adalah Orders, maka:

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

Sebagai contoh:

 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();
 }

Berikut adalah contoh langsungnya:

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();
  }
}
DmitryBoyko
sumber
1
Saya tidak memiliki metode AddObject.
Rocshy
@Dennis Traub bertanya tentang Model Anda. Mohon berikan info lebih lanjut tentang itu.
DmitryBoyko
29
Gunakan .Add daripada .AddObject
Dale Fraser
9
Pada EF 6, Anda akan menggunakan .Add daripada .AddObject
David
1
Jawaban yang fantastis! terima kasih untuk ini karena ini menunjukkan cara membaca dan menulis menggunakan kerangka entitas
Stephen Pefanis
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();

Harus melakukannya

Nawed Nabi Zada
sumber
7

[HttpPost] // digunakan ketika Anda menulis logika pada acara klik tombol

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();
}
sanket parikh
sumber
jika ada pertanyaan tanya saya
sanket parikh
3

Saya menggunakan EF6, dan saya menemukan sesuatu yang aneh,

Misalkan Pelanggan memiliki konstruktor dengan parameter,

jika saya menggunakan new Customer(id, "name"), dan melakukan

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

Ini berjalan tanpa kesalahan, tetapi ketika saya melihat ke DataBase, saya menemukan fakta bahwa data TIDAK Disisipkan,

Tetapi jika saya menambahkan tanda kurung kurawal, gunakan new Customer(id, "name"){}dan lakukan

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

data tersebut kemudian akan benar-benar disisipkan,

Sepertinya Curly Brackets membuat perbedaan, saya kira hanya ketika menambahkan Curly Brackets, kerangka kerja entitas akan mengenali ini adalah data konkret nyata.

yu yang Jian
sumber