如何解决访问不在我的域模型中的表列
在我的域模型 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 举报,一经查实,本站将立刻删除。