Forum
Herkese Merhaba;
Ben bir windows tabanlı bir proje geliştiriyorum projemin sonuna geldim fakat proje geliştirilmeye yönelik bir proje. Geliştirilmesini sağladığımda projeye bağlı veritabanınıda güncellemem gerekiyor. Ben bu projenin veritabanını güncelliyecek bir program yazmak istiyorum. Araştırmasını yaptım migration yapısı ile karşılaştım istediğim şeyi karşılıyor fakat oradada 2 adet sorun ile karşılaşıyorum.1. Migration ile oluşturduğum tablonun ismini nasıl kendim belirliyebilirim. 2. Package Manager Console database güncelleme için yazdığımız update-database komutunu nasıl bir butona entegre ettirerek çalıştırabilirim.
Şimdiden ilginiz için teşekkür eder. Bu zor günlerde hayatınızda başarılar dilerim.
Merhaba,
Veritabanı güncellemeden kastın tam olarak nedir? Biraz daha açar mısın?
Herkese Merhaba;
Ben bir windows tabanlı bir proje geliştiriyorum projemin sonuna geldim fakat proje geliştirilmeye yönelik bir proje. Geliştirilmesini sağladığımda projeye bağlı veritabanınıda güncellemem gerekiyor. Ben bu projenin veritabanını güncelliyecek bir program yazmak istiyorum. Araştırmasını yaptım migration yapısı ile karşılaştım istediğim şeyi karşılıyor fakat oradada 2 adet sorun ile karşılaşıyorum.1. Migration ile oluşturduğum tablonun ismini nasıl kendim belirliyebilirim. 2. Package Manager Console database güncelleme için yazdığımız update-database komutunu nasıl bir butona entegre ettirerek çalıştırabilirim.
Şimdiden ilginiz için teşekkür eder. Bu zor günlerde hayatınızda başarılar dilerim.
ilk sorunuz zaten migrate dosyasında update-create edeceğiniz detayları girerek yapılıyor bir tablo ismi girmeden zaten tablo create edemezsiniz.
Örnek;
public partial class InitialCreate : DbMigration { public override void Up() { CreateTable( "dbo.Course", c => new { CourseID = c.Int(nullable: false), Title = c.String(), Credits = c.Int(nullable: false), }) .PrimaryKey(t => t.CourseID); CreateTable( "dbo.Enrollment", c => new { EnrollmentID = c.Int(nullable: false, identity: true), CourseID = c.Int(nullable: false), StudentID = c.Int(nullable: false), Grade = c.Int(), }) .PrimaryKey(t => t.EnrollmentID) .ForeignKey("dbo.Course", t => t.CourseID, cascadeDelete: true) .ForeignKey("dbo.Student", t => t.StudentID, cascadeDelete: true) .Index(t => t.CourseID) .Index(t => t.StudentID); CreateTable( "dbo.Student", c => new { ID = c.Int(nullable: false, identity: true), LastName = c.String(), FirstMidName = c.String(), EnrollmentDate = c.DateTime(nullable: false), }) .PrimaryKey(t => t.ID); } public override void Down() { DropForeignKey("dbo.Enrollment", "StudentID", "dbo.Student"); DropForeignKey("dbo.Enrollment", "CourseID", "dbo.Course"); DropIndex("dbo.Enrollment", new[] { "StudentID" }); DropIndex("dbo.Enrollment", new[] { "CourseID" }); DropTable("dbo.Student"); DropTable("dbo.Enrollment"); DropTable("dbo.Course"); } }
2. Sorunuza gelirsek;
MigrateDatabaseToLatestVersion kullanmanız gerekmektedir.
Örnek uygulama başlangıcında migrate için;
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.Entity; using MigrationsDemo.Migrations; namespace MigrationsDemo { class Program { static void Main(string[] args) { Database.SetInitializer(new MigrateDatabaseToLatestVersion<BlogContext, Configuration>()); using (var db = new BlogContext()) { db.Blogs.Add(new Blog { Name = "Another Blog " }); db.SaveChanges(); foreach (var blog in db.Blogs) { Console.WriteLine(blog.Name); } } Console.WriteLine("Press any key to exit..."); Console.ReadKey(); } } }
Detaylı bilgileri bu linkte bulabilirsin;
https://docs.microsoft.com/tr-tr/ef/ef6/modeling/code-first/migrations/