سؤال

وأنا أحاول لتخزين URI كسلسلة في قاعدة بيانات، وذلك باستخدام LINQ.

[Column(Name = "Url", DbType = "nvarchar(255)")]
public Uri Url
{
    get
    {
        return new Uri(_url);
    }
    set
    {
        _url = value.AbsoluteUri;
    }
}

private string _url;

وهذه الخرائط بشكل جيد لتصميم قاعدة البيانات الخاصة بي، ولكن عندما يحاول جلب البيانات باستخدام هذا الرمز:

int id = 3;
_serie = new DataContext(connString).GetTable<Serie>();
var serie = _serie.FirstOrDefault(s => s.Id == id);

وفي السطر الأخير، وأحصل على استثناء

System.InvalidCastException: Invalid cast from System.String to System.Uri etc

وماذا يجب أن أفعل الحصول بشكل صحيح التعامل مع URI في قانون بلدي، ولكن تخزينه هو NVARCHAR (255) في قاعدة البيانات؟ يبدو بسيطا، ولكن لا أستطيع معرفة من أين أنا أفعل ذلك الخطأ.

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

المحلول

وكما هو الحال دائما، الكتابة والسؤال ساعدني ندرك المشكلة. التعليمة البرمجية التالية ثابتة مشكلتي:

public Uri Url
{
    get
    {
        return new Uri(_url);
    }
    set
    {
        _url = value.AbsoluteUri;
    }
}

[Column(Name = "Url", DbType = "nvarchar(255)")]
private string _url;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top