代码之家  ›  专栏  ›  技术社区  ›  Jonas Lincoln

将URI映射到LINQ到SQL中的字符串字段

  •  2
  • Jonas Lincoln  · 技术社区  · 15 年前

    我正在尝试使用LINQ将URI存储为数据库中的字符串。

    [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)?这看起来很简单,但我不知道我做错了什么。

    1 回复  |  直到 15 年前
        1
  •  5
  •   Jonas Lincoln    15 年前

    和往常一样,写下这个问题帮助我认识到了这个问题。以下代码修复了我的问题:

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