微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

访问不在我的域模型中的表列

如何解决访问不在我的域模型中的表列

在我的域模型 RestaurantOwner 中,我添加public List<Restaurant> Restaurants { get; set; }。这在我的 Restaurant 表中创建了一个 RestaurantOwnerId 列。当尝试在代码中访问该表时,我可以访问我的 Restaurant 表的所有属性,当然除了 RestaurantOwnerId,因为它不在我的 Restaurant 中 领域模型。

我认为这很明显,我可以将 RestaurantOwnerId 作为道具添加到我的 Restaurant 域模型中,但它似乎改变了很多,并且弄乱了我的外国键。

访问此列的干净方式是什么?

谢谢!

public class Restaurant
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string City { get; set; }
}

public class RestaurantOwner : IdentityUser
{
    [MaxLength(100)]
    public string FirstName { get; set; }
    [MaxLength(100)]
    public string LastName { get; set; }
    public DateTime DateOfBirth { get; set; }
    public List<Restaurant> Restaurants { get; set; }
}

解决方法

您能做的最好的事情是尝试删除现有关系并重新正确添加关系。要删除关系,请从 public List<Restaurant> Restaurants { get; set; } 中删除 RestaurantOwner。然后创建迁移。

后记再次创建关系如下。 (将 efcore 用于一对多关系时有许多约定,这是其中之一。您遵循的是另一个约定。取一个 look。)

public class Restaurant
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string City { get; set; }
    public string RestaurantOwnerId { get; set; }
    public RestaurantOwner RestaurantOwner { get; set; }
}

public class RestaurantOwner : IdentityUser
{
    [MaxLength(100)]
    public string FirstName { get; set; }
    [MaxLength(100)]
    public string LastName { get; set; }
    public DateTime DateOfBirth { get; set; }
    public ICollection<Restaurant> Restaurants { get; set; }
}

然后创建迁移并更新数据库。确保使用 Fluent API 通过采用 OnDelete 枚举的 DeleteBehaviour 方法配置引用操作约束。以下示例在主体被删除的情况下将依赖实体的外键值设置为 null:

protected override void OnModelCreating(Modelbuilder modelBuilder)
{
    modelBuilder.Entity<RestaurantOwner>()
        .HasMany(c => c.Restaurants)
        .WithOne(e => e.RestaurantOwner).
        .OnDelete(DeleteBehavior.SetNull);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。