是否可以获取现有表并将其映射到包含复杂类型的对象.

例如:

表Customer有几个地址列,但它们被简单地命名为AddressLine1、AddressLine2等,而不是Customer_AddressLine1.有没有办法仍然将这些字段映射到复杂类型?

例如:

public class Customer
{
    public int Id { get; set; }
    public int FirstName { get; set; }

    public string AddressLine1 { get; set; }
    public string AddressLine2 { get; set; }
}

将变成:

public class Customer
{
    public int Id { get; set; }
    public int FirstName { get; set; }

    public Address Address { get; set; }
}

public record Address(string Line1, string Line2);

推荐答案

一种 Select 是手动提供列名(假设您使用的是具有复杂类型的EF 8,对于owned entities也可以这样做):

modelBuilder.Entity<Customer>()
    .ComplexProperty(entity => entity.Address, builder =>
    {
        builder.Property(c => c.Line1).HasColumnName("AddressLine1");
        builder.Property(c => c.Line2).HasColumnName("AddressLine2");
    });

其他选项可能是混杂在interceptors和/或IMutableModel(如here)中

Csharp相关问答推荐

在. NET Core 8 Web API中,当为服务总线使用通用消费者时,如何防止IServiceProvider被释放或空?"

数组被内部函数租用时,如何将数组返回给ArrayPool?

为什么我的ASP.NET核心MVC应用程序要为HTML元素添加一些标识符?

如何从HttpContext获取请求正文

如果存在对CodeAnalysis.CSharp的引用,则不能引用netStandard2.0库

Polly使用泛型重试和重试包装函数

在C#中,有没有一种方法可以集中定义跨多个方法使用的XML参数描述符?

无法通过绑定禁用条目

使用预定义对象减少Task.Run/Factory.StartNew中的关闭开销

MigraDoc文档

确定System.Text.Json序列化中是否无法识别Type

什么时候接受(等待)信号灯?尽可能的本地化?

为什么方法的值在SELECT方法中不会更改?

关于扩展文件类C#的矛盾

具有类型识别的泛型方法

Azure Functions v4中的Serilog控制台主题

当`JToken?`为空时?

Xamarin Forms应用程序中登录页面的用户名和密码编辑文本之间不需要的空格

有没有更好的方法来使用LINQ获取整行的计算组

Avalonia MVVM数据模板