asp.net - 访问不在我的域模型中的表列
问题描述
在我的域模型RestaurantOwner中,我添加了public List<Restaurant> Restaurants { get; set; }
. 这在我的餐厅表中创建了一个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
。然后创建迁移。
Afterwords 再次创建关系如下。(在使用 efcore 进行一对多关系时有很多约定,这是其中之一。您遵循的是另一种约定。看看。)
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; }
}
然后创建迁移并更新数据库。确保通过OnDelete
采用DeleteBehaviour
枚举的方法使用 Fluent API 配置引用动作约束。以下示例在删除主体的情况下将依赖实体的外键值设置为 null:
protected override void OnModelCreating(Modelbuilder modelBuilder)
{
modelBuilder.Entity<RestaurantOwner>()
.HasMany(c => c.Restaurants)
.WithOne(e => e.RestaurantOwner).
.OnDelete(DeleteBehavior.SetNull);
}
推荐阅读
- c# - 在 UWP 中使用 data.sqlclient 的 SQL Server 请求出错
- rust - 如何将值推送到 Vec 并同时将其附加到 String?
- angular - 文件名...不同于已包含的文件名...仅在大小写中
- ios - 笔尖中的颜色资产以编程方式覆盖设置颜色
- android - 当且仅当按钮的活动来自另一个活动时,我如何才能使按钮不可见?
- json - 添加“debugLocale”时如何通过write-manifest.json的JSON验证?
- python - 是否可以在 tkinter 画布中填充弧形/椭圆形的外部?
- xcode - 在 git pull 命令后,React 本机应用程序停止工作
- javascript - WebAPI 5.2.7 使用基类中的 JSON.Net 从角度日期错误地反序列化
- java - 返回所有值的问题