【问题标题】:How to Convert 'Uri' into String when using entity framework core使用实体框架核心时如何将“Uri”转换为字符串
【发布时间】:2019-04-30 12:08:50
【问题描述】:

我想使用 POCO 类中的实体框架核心创建数据库表。当我尝试添加一个新的脚手架项目(选项:在 VS 中使用实体框架 (CRUD) 的 Razor 页面)时,出现错误提示:“没有为实体类型 'Uri' 找到合适的构造函数”

我了解到(除其他外)Uri 必须在 OnModelCreating 方法(在继承自 dbContext 的类中)中转换为字符串。

DbContext 类:

    public class SchoolDbContext : DbContext {
      public DbSet<Student> Students { get; set; }

      protected override void OnModelCreating(ModelBuilder modelBuilder) {
        modelBuilder.Entity<Student>()
        .Property(t => t.Homepage)
        .HasConversion(
        v => v.ToString(),
        v => new Uri(v));
      }
    }

学生班:

    public class Student {
      public int ID { get; set; }
      public Uri Homepage {get; set; }
    }

我知道在输入“Add-Migration Initial”命令时会调用 OnModelCreating 方法。但由于我尝试自动实现 CRUD 类,我无法输入命令“添加迁移初始值”。 非常感谢,请原谅我糟糕的英语..

【问题讨论】:

  • 尝试在Configure方法中添加HasConversion代码here
  • 谢谢,但我已经尝试过了..

标签: c# entity-framework-core


【解决方案1】:
var uri = new Uri(path);
uri.AbsolutePath();

【讨论】:

    【解决方案2】:

    如果我理解正确你的问题,你可以试着写:

    Path.Combine(Homepage.Segments);
    

    创建代表 Uri 路径的字符串。

    【讨论】:

      【解决方案3】:

      如果您需要将Uri 转换为字符串,请使用Uri 属性Uri.AbsolutePath,这将返回Uri 的字符串转换。 例如:

        public class Student
         {
             public int ID { get; set; }
             public Uri Homepage { get; set; }
         }
         Student s= new Student();
         string myUri = s.Homepage.AbsolutePath;
      or
      
          public class SchoolDbContext : DbContext {
          public DbSet<Student> Students { get; set; }
      
                protected override void OnModelCreating(ModelBuilder modelBuilder) {
                  modelBuilder.Entity<Student>()
                  .Property(t => t.Homepage.AbsolutePath);
                }
              }
      

      【讨论】:

        【解决方案4】:

        我终于找到了解决问题的方法:虽然我确实编写了一个继承自 DbContext 的 SchoolDbContext 类,但我没有指定该特定类作为我的数据库访问的上下文。创建新的脚手架项目(使用实体框架 (CRUD) 的 Razor 页面)时,系统会要求您指定模型类和上下文类。我必须指定我的 SchoolDbContext 类,而不是使用“+”按钮生成新的上下文(我一直这样做)。

        【讨论】:

          猜你喜欢
          • 2019-01-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-08-19
          相关资源
          最近更新 更多