代码之家  ›  专栏  ›  技术社区  ›  Konrad

将DTO映射到EF实体时处理关系

  •  0
  • Konrad  · 技术社区  · 6 年前

    在我的dto中,我发送id而不是整个对象来将一个对象分配/关联到另一个对象。问题是我的映射代码需要访问数据库来处理这个问题,因为我的实体类没有 BarId 财产。

    public class FooDTO
    {
        public int FooId { get; set; }
        public int BarId { get; set; }
    }
    
    public class Foo
    {
        public int FooId { get; set; }
        public Bar Bar { get; set; }
    }
    

    这可能可以通过添加 巴里德 属性设置为我的实体类,这样我就不会将数据访问与映射器耦合。

    但问题是:如果指定的ID不存在,可以用一些合理的方式来处理自定义错误消息吗?

    public class Foo
    {
        public int FooId { get; set; }
        public int? BarId { get; set; }
        public Bar Bar { get; set; }
    }
    

    在我的映射代码中访问数据库并手动处理这些分配是否合适,或者通过显式地添加外键属性将其留给ORM更好( 巴里德 )在我的实体课上?

    另见: https://docs.microsoft.com/en-us/ef/core/modeling/relationships#no-foreign-key-property

    虽然建议在依赖实体类中定义外键属性,但这不是必需的。

    似乎建议添加外键属性,所以我想我将选择此路径。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Z .    6 年前

    不,不好。如果您正在访问数据库,这绝对不是映射代码。