我正在尝试创建一个新表,该表将被任何其他表使用。
表名将是 Uploads。我会为每个源表记录手动增加Id字段。
例如:我将添加 3 个上传的新预订记录。这 3 个上传将具有相同的 ID。
之后,当我创建一个带有 2 个上传的新场地记录时。我将增加Uploads.Id,然后这2个上传将具有相同的Id。
由于此表将被其他表使用,我不想为每个表创建导航器。有什么办法吗?
希望你清楚我想问什么。实例模型如下;
public class Upload
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Bookings {
public int Id {get;set;}
public int? UploadId { get; set; }
public virtual ICollection<Upload> Uploads { get; set; }
}
public class Venues {
public int Id {get;set;}
public int? UploadId { get; set; }
public virtual ICollection<Upload> Uploads { get; set; }
}
答案 0 :(得分:0)
我不想为每个表都创建一个导航器。
默认情况下,当在类型上发现导航属性时,将创建关系。
<块引用>我将添加 3 个上传的新预订记录。这 3 次上传将具有相同的 ID。
public class Upload
{
public int Id { get; set; }
public string Name { get; set; }
public int? BookingId { get; set; }
public int? VenueId { get; set; }
}
public class Bookings
{
public int Id {get;set;}
public virtual ICollection<Upload> Uploads { get; set; }
}
public class Venues
{
public int Id {get;set;}
public virtual ICollection<Upload> Uploads { get; set; }
}
我建议您click this link查看定义两个实体如何相互关联的关系。
答案 1 :(得分:0)
虽然您可以在 BookingId
表中添加 VenueId
/ Upload
,但根据此问题的其他答案。
由于 EF Core 仅支持对应于主键/外键的导航。如果您想确保您的 Upload
对它们的使用位置一无所知,您需要引入一个新表来表示 Upload
的集合。
这还允许您使用身份字段为每个集合自动编号。
public class UploadSet
{
public int Id { get; set; }
public virtual ICollection<Upload> Uploads { get; set; }
}
public class Upload
{
public int Id { get; set; }
public int SetId { get; set; }
public string Name { get; set; }
}
public class Bookings
{
public int Id {get;set;}
public int? UploadSetId {get;set;}
public virtual UploadSet UploadSet { get; set; }
}
请注意,此架构不会阻止您将同一组上传意外链接到多个父级。