نوشته شده توسط
Shadow_net
سلام دوستان
من با تکنولوژی EF هم CodeFirst و هم DatabaseFirst کد نویسی میکنم و مشکل خاصی ندارم
تنها مشکلم اینه که نمیتونم به sqlite و access (MDB 2003) وصل بشم. توی سایت های خارجی هم جستجو کردید و نمونه هایی که برای sqlite وجود داشت رو تست کردم ولی بازم نشد
دوستانی که تجربه کار مخصوصاً با sqlite رو دارند خواهش میکنم کمک کنند و اگر سورس تست شده یا منبعی دارن ممنون میشم در اختیارم بذارن
پیشاپیش از وقتی که میذارید ممنونم
سلام برای کار با کدفرست از ناگت پکیج هارو نصب کنید
Install-Package System.Data.SQLite
Install-Package SQLite.CodeFirst
فایل app.config رو باز کنید و این پروایدر رو اضافه کنید
<provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderService s, System.Data.SQLite.EF6" />
در نهایت کانکشن استرینگ رو اضافه کنید
<connectionStrings>
<add name="default" connectionString="data source=app.db;" providerName="System.Data.SQLite" />
</connectionStrings>
یه کلاس بسازید و جدول خودتون رو ایجاد کنید
[Table("Users")]
public class User
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity )]
public long Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public DateTime Created { get; set; }
}
یه کلاس کانتکس بسازید و کدهارو بنویسید
public class TestDbContext : DbContext
{
public virtual DbSet<User> Users { get; set; }
public TestDbContext()
: base("default")
{ }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
var sqliteConnectionInitializer = new SqliteCreateDatabaseIfNotExists<TestDbContext>(mod elBuilder);
Database.SetInitializer(sqliteConnectionInitialize r);
}
}
کار تمومه میتونید دیتابیس رو فراخوانی کنید تا دیتابیس ایجاد بشه
var db = new TestDbContext();
var users = db.Users.ToList();
اگر هم میخواید که از ویژگی های تغییر مدل و... استفاده کنید کلاس کانتکس رو به این صورت تغییر بدید
public class MyDbContextInitializer : SqliteDropCreateDatabaseWhenModelChanges<TestDbCon text>
{
public MyDbContextInitializer(DbModelBuilder modelBuilder)
: base(modelBuilder) { }
protected override void Seed(TestDbContext context)
{
context.Users.Add(new User
{
Name = "Richard Niemand",
Created = DateTime.Now
});
base.Seed(context);
}
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
var sqliteConnectionInitializer = new MyDbContextInitializer(modelBuilder);
Database.SetInitializer(sqliteConnectionInitialize r);
}