PDA

View Full Version : سوال: کار با Sqlite و Access توسط Entity Framework



Shadow_net
چهارشنبه 22 فروردین 1397, 20:09 عصر
سلام دوستان
من با تکنولوژی EF هم CodeFirst و هم DatabaseFirst کد نویسی میکنم و مشکل خاصی ندارم
تنها مشکلم اینه که نمیتونم به sqlite و access (MDB 2003) وصل بشم. توی سایت های خارجی هم جستجو کردید و نمونه هایی که برای sqlite وجود داشت رو تست کردم ولی بازم نشد
دوستانی که تجربه کار مخصوصاً با sqlite رو دارند خواهش میکنم کمک کنند و اگر سورس تست شده یا منبعی دارن ممنون میشم در اختیارم بذارن
پیشاپیش از وقتی که میذارید ممنونم

barnamenevisjavan
چهارشنبه 22 فروردین 1397, 20:40 عصر
سلام دوستان
من با تکنولوژی 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.SQLiteProviderServices, 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>(modelBuilder);
Database.SetInitializer(sqliteConnectionInitialize r);

}
}
کار تمومه میتونید دیتابیس رو فراخوانی کنید تا دیتابیس ایجاد بشه
var db = new TestDbContext();
var users = db.Users.ToList();
اگر هم میخواید که از ویژگی های تغییر مدل و... استفاده کنید کلاس کانتکس رو به این صورت تغییر بدید
public class MyDbContextInitializer : SqliteDropCreateDatabaseWhenModelChanges<TestDbContext>
{
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);
}

Shadow_net
چهارشنبه 22 فروردین 1397, 23:25 عصر
ممنونم دوست عزیز
ولی بازم ارور داد
میشه خواهش کنم فایل رو به صورت سورس اینجا آپلود کتید؟
خیلی ممنون

barnamenevisjavan
پنج شنبه 23 فروردین 1397, 18:51 عصر
ممنونم دوست عزیز
ولی بازم ارور داد
میشه خواهش کنم فایل رو به صورت سورس اینجا آپلود کتید؟
خیلی ممنون
یعنی چی ارور داد؟ دات نت پروژه باید روی 4 یا بالاتر باشه متن خطا بزارید

Shadow_net
جمعه 24 فروردین 1397, 10:48 صبح
سلام
دات نت من روی 4.7.1 هست و ارور زیر رو میده:

The ADO.NET provider with invariant name 'System.Data.SQLite' is either not registered in the machine or application config file, or could not be loaded. See the inner exception for details.
Inner Expception:
Unable to find the requested .Net Framework Data Provider. It may not be installed.
پروژه رو آپلود کردم فقط پوشه Package و Debug رو حذف کردم چون حجمش نزدیک 66 مگ بود
ممنون از وقتی که میذارید

barnamenevisjavan
شنبه 25 فروردین 1397, 19:37 عصر
سلام
دات نت من روی 4.7.1 هست و ارور زیر رو میده:

The ADO.NET provider with invariant name 'System.Data.SQLite' is either not registered in the machine or application config file, or could not be loaded. See the inner exception for details.
Inner Expception:
Unable to find the requested .Net Framework Data Provider. It may not be installed.
پروژه رو آپلود کردم فقط پوشه Package و Debug رو حذف کردم چون حجمش نزدیک 66 مگ بود
ممنون از وقتی که میذارید
فرصت بررسی پروژه شمارو ندارم مطمئن شید که هر دو پکیج نصب شده باشن
Install-Package System.Data.SQLite
Install-Package SQLite.CodeFirst
دات نت پروژه رو حداقل رو 4.5 قرار بدید تست کنید
بیلد پروژه رو بر روی anycpu قرار بدید