के साथ System.Data.SQLite का उपयोग करके सरल उदाहरण। मैं SQLite और EF6 का उपयोग कर कंसोल ऐप में काम करने के लिए एक सरल कोड प्राप्त करने का प्रयास कर रहा हूं, हालांकि मैं कई त्रुटियों में चल रहा हूं: मैंने एक नया कंसोल बनाया वीएस 2015 में परियोजना। फिर NuGet के माध्यम से ईएफ (6.1.3) और System.Data.SQLite (1.0.102) स्थापित करें।एंटिटी फ्रेमवर्क 6
namespace SQLiteConsole1
{
class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
class MyContext : DbContext
{
public DbSet<Person> Persons { get; set; }
}
class Program
{
static void Main(string[] args)
{
using (var db = new MyContext())
{
var person = new Person() { Name = "John" };
db.Persons.Add(person);
db.SaveChanges();
}
}
}
}
यह मेरी app.config इस तरह दिखता है क्या है:
कोशिश एक सरल कार्यक्रम चलाने के लिए
<connectionStrings>
<add name="MyContext" connectionString="Data Source=C:\Temp\Test.sqlite" providerName="System.Data.SQLite" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
<remove invariant="System.Data.SQLite" /><add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /></DbProviderFactories>
</system.data>
जब मैं पहली बार इस कार्यक्रम मैं निम्नलिखित त्रुटि मिलती है चलाएँ:
"अनचाहे अपवाद: System.InvalidOperationException: एडीओ.NET प्रदाता के लिए inventt name 'System.Data.SQLite' के साथ कोई इकाई फ्रेमवर्क प्रदाता नहीं मिला। सुनिश्चित करें कि प्रदाता पंजीकृत है एप्लिकेशन कॉन्फ़िगरेशन फ़ाइल का 'entityFramework' अनुभाग। "
तो मैं <provider invariantName="System.Data.SQLite.EF6"
<provider invariantName="System.Data.SQLite"
को बदलने के लिए, तो मैं इस त्रुटि मिलती है:
Unhandled Exception: System.Data.Entity.Infrastructure.DbUpdateException: An error occurred while updating the entries. See the inner exception for details. System.Data.Entity.Core.UpdateException: An error occurred while updating the entries. See the inner exception for details. System.Data.SQLite.SQLiteException: SQL logic error or missing database no such table: People
क्या इस सरल काम कर उदाहरण प्राप्त करने के लिए परिवर्तित करने की जरूरत है?
क्या यहां ध्यान देने के लिए कुछ खास बात है? मेरे पास एक कनेक्शन स्ट्रिंग है जिसे के रूप में परिभाषित किया गया है और मेरे ऑनमोडेल क्रिएटिंग में निम्न है, लेकिन मुझे एक त्रुटि मिल रही है "अंतर्निहित प्रदाता ओपन पर असफल रहा": var sqliteConnectionInitializer = new SqliteCreateDatabaseIfNotExists (मॉडलबिल्डर); डाटाबेस .etInitializer (sqliteConnectionInitializer); –
यह मेरा कनेक्शन स्ट्रिंग जैसा दिखता है: ' '। क्या इससे कोई फर्क पड़ता है? –
RaelB
नहीं, एक रिश्तेदार बनाम पूर्ण पथ का उपयोग करना समस्या प्रतीत नहीं होता है। –