在 EF/SQL Server 中存储 URI 的最佳方式是什么?

Hui Liu-MSFT 48,531 信誉分 Microsoft 供应商
2024-03-26T08:45:23.75+00:00

大家好;我在 Entity Framework 类中有一些属性是 URI。

有没有办法将它们作为 URI 存储在数据库中?还是我应该将它们存储为字符串?

基础数据库是 Azure 上的 SQL 数据库。Note:

此问题总结整理于:What is the best way to store URI in EF/SQL Server?

Entity Framework Core
Entity Framework Core
实体框架数据访问技术的轻量型、可扩展、开源、跨平台版本。
49 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Jiale Xue - MSFT 45,006 信誉分 Microsoft 供应商
    2024-03-26T09:21:47.46+00:00

    欢迎来到 Microsoft Q&A,您可以参考 Microsoft 学习价值转换来做到这一点。

    下面是一个可以参考的代码示例。

     public class Website
        {
            public int Id { get; set; } 
    
            public string? Name { get; set; }
    
            public Uri uri { get; set; }    
        }
    
        public class MyContext:DbContext
        { 
            public DbSet<Website> websites { get; set; }
    
            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
                optionsBuilder.UseSqlServer("");
            }
        }
        public class MyEntityDbConfiguration : IEntityTypeConfiguration<Website>
        {
            public void Configure(EntityTypeBuilder<Website> builder)
            {
                builder.Property(e => e.uri)
                        .HasConversion(v => v.ToString(), v => new Uri(v));
            }
        }
    
    

    我在 main 方法中添加了一个实体:

    static void Main(string[] args)
            {
                Uri uri = new Uri("uri path");
                MyContext context=new MyContext();
                context.websites.Add(new Website() { Name = "web1", uri = uri });
                context.SaveChanges();
    
    
            }
    
    

    检查后,数据库可以正确存储 URI:

    用户图像

    希望我的解决方案会有所帮助。


    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。

    注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。