سؤال

قبل أن أستثمر الوقت في تعديل المصدر الفاعي للفرطية، احسب أنني أسأل أن أرى ما إذا كنت أفتقد شيئا بسيطا.

هل من الممكن استخدام مستودع 10 البنطيات 3 مع هجرة على قاعدة بيانات SQLite داخل الذاكرة؟ لم أستطع إيجاد طريقة لفرض DBDataprovider للحفاظ على فتح الاتصال حتى لا تتلاشى قاعدة بيانات SQLite داخل الذاكرة عند إغلاق الاتصال.

اختبار الوحدة مع سلسلة الاتصال كنت أحاول ...

public class SQLite_InMemory_SimpleRepositoryTests
{
    public class Job
    {
        public Guid JobId { get; set; }
        public string JobName { get; set; }
    }

    [Fact]
    public void SQLite_InMemory_SimpleRepo_CanStayOpen()
    {
        IDataProvider provider = ProviderFactory.GetProvider("Data Source=:memory:;Version=3;New=True;Pooling=True;Max Pool Size=1;", "System.Data.SQLite");
        IRepository repository = new SimpleRepository(provider, SimpleRepositoryOptions.RunMigrations);

        for (int i = 0; i < 10000; i++)
        {
            var job = new Job {JobId = Guid.NewGuid(), JobName = "Job_"+i};
            repository.Add(job);
        }
    }
}

حاولت تحديد "الاتصال المشترك" على idataprovider، ولكن لا يزال الاتصال بالإغلاق.

إذا لم يكن كذلك، سأقوم بتحديث المصدر الخاطئ، وتقديم التغييرات.

شكرا!

هل كانت مفيدة؟

المحلول

مثيرة للاهتمام - لا لا توجد طريقة يمكنني التفكير فيها في القيام بذلك بخلافها والتي ربما خلق idataprovider ثابتة ولكن حتى نغلق الاتصال لفعل أشياء مثل تنفيذ العددية إلخ.

أنا أتمكن من خلق مثل هذا الشيء عن طريق تنفيذ idataprovider ثم تحدد الأمور كما تحتاج - كل الإعدام يذهب من خلال ذلك. ولكن هذا يجعلني أتساءل ما إذا كنا أغلق الأشياء بشكل صريح في رمز الاتصال - وهو ما سيكون تصميم سيء في الجزء الخاص بي ... هممم.

أحب أن يكون لديك هذه الميزة ...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top