首页 > 解决方案 > 首先使用 EF Core 代码在两个表之间进行映射

问题描述

我希望尝试使用EF Core code first如下方式构建以下两个模型之间的架构和关系

public class Status
{
    public int Id { get; set; }
    public string Status { get; set; }
}

public class Order
{
    public Guid Id  { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public Status status { get; set; }
}

请任何人建议是否需要对上述模型(状态和订单)进行任何更改以获得如下查询结果

     OrderID    description    status
       1            test1      approved
       2            test2      rejected

标签: c#entity-frameworkentity-framework-coreef-code-firstef-core-3.0

解决方案


我在下面编写代码并获得下一个结果。

1d7336aa-c144-4ca4-d2de-08d76cae93ab 说明已批准

public static void Main()
{
    ShowData(AddData());
}

public static void ShowData(Guid orderId)
{
    using var context = new OrderContext();
    Console.WriteLine(context.Orders
        .Where(x => x.Id == orderId)
        .First()
        .ToString());
}

public static Guid AddData()
{
    using var context = new OrderContext();
    var status = new Status()
    {
        StatusName = "approved"
    };
    var order = new Order()
    {
        Description = "Description",
        Name = "Name",
        OrderStatus = status
    };

    context.Orders.Add(order);

    context.SaveChanges();

    return order.Id;
}

public class Status
{
    public int Id { get; set; }
    public string StatusName { get; set; }

    public override string ToString()
    {
        return $"{StatusName}";
    }
}

public class Order
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public virtual Status OrderStatus { get; set; }

    public override string ToString()
    {
        return $"{Id} {Description} {OrderStatus}";
    }
}

我认为除了将虚拟修改器添加到 OrderStatus 之外,您不应该更改任何内容。


推荐阅读