【发布时间】:2021-03-14 13:58:54
【问题描述】:
我正在尝试通过实体框架构建一个或多个具有映射的表,但是,我在使用从我正在使用的 API 构建的 DTO 文件时遇到了麻烦。
这是我正在使用的 DTO 文件,我专门从 POSTMAN 粘贴它以获取 JSON 数据。
public class AllRequests
{
public class Rootobject
{
public Operation operation { get; set; }
}
public class Operation
{
public Result result { get; set; }
public Detail[] details { get; set; }
}
public class Result
{
public string message { get; set; }
public string status { get; set; }
}
public class Detail
{
public string requester { get; set; }
public string workorderid { get; set; }
public string accountname { get; set; }
public string createdby { get; set; }
public string subject { get; set; }
public string technician { get; set; }
public string isoverdue { get; set; }
public string duebytime { get; set; }
public string priority { get; set; }
public string createdtime { get; set; }
public string ignorerequest { get; set; }
public string status { get; set; }
}
}
正如您在上面看到的,它非常分层,因此不像从简单的类文件生成表那么简单。
这是我的DbContext 文件:
public class TransitionContext : DbContext
{
private const string connectionString = (connection);
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(connectionString);
}
public DbSet<AllRequests> Requests { get; set; }
}
我已经设置了运行良好的迁移,有一个连接到我的 SQL Server。但是,当我在 PM 控制台中运行 Update-Database 命令时,它不起作用。这些错误不是直截了当的,但它们让我在圈子里跑来跑去,首先它设置了一个 ID 键,然后是表关系,但是没有关于如何做到这一点的好的源材料。
谁能教我如何在我的 SQL Server 上通过实体框架成功实现这个 DTO?我猜它会使用模型创建器,但我仍然不确定该过程在这种情况下是如何完全工作的。
任何帮助将不胜感激。
【问题讨论】:
-
确实缺少一些键...
-
发布确切的错误消息...“它不会工作”...嗯...不会工作。把它放在OP中。
-
@KyleAT
OP是你 - 原始海报。将所有信息放在问题中。I don't want to put too much information into the question.你没有提供足够的信息。您发布的内容无法映射,实际上会在构建 DbContext 时导致运行时错误 -
@KyleAT 出了点问题,但您没有发布足够的信息。 EF 不处理 API DTO,它处理实体、表及其映射。适用于 API 的方法不适用于应用程序类或数据库表。
DbSet<AllRequests>毫无意义,因为嵌套类和封闭类之间没有 no 关系。如果AllRequests是一个命名空间会更有意义 -
first it's set an ID key, then it's table relationships, but there's no good source material on how to do it.相反,每个教程都涵盖了这一点。有这么多错误的原因是没有 no 配置,类之间没有关系,没有ID属性。没有约定可以用来确定键和关系
标签: c# json sql-server entity-framework dto